有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

目录名中有空格的java文件对象

我试图列出目录中的文件数。但我无法做到这一点,我怀疑这与父目录名中的空白有关
我现在所做的是在一个特殊的环境中。属性文件我将该值设置为-

dir.loc=H:/Main/dir one/dir - two/dir3/dir four  
dir.name=Run

现在在jave文件中,我将这些值设置为字符串变量,如下所示-

String s1 = properties.getProperty("dir.loc");
String s2 = properties.getProperty("dir.name");

我将文件对象创建为-

File f = new File(s1, s2);
File[] fList = f.listFiles();  

现在这里的fListnull
H驱动器在另一台远程机器上,我估计java程序会尝试在本地定位“Run”目录,而不是在H驱动器上找到它,因为它没有找到“Run”,所以列表返回null

当我尝试在一个简单的java类中使用-

File f = new File("H:/Main/dir one/dir - two/dir3/dir four", "Run");  

然后我用f.listFiles().length;得到结果

所以我想它可能需要从属性文件中提取值并将其分配给字符串变量

我的假设正确吗
这个问题的可能解决方案是什么


共 (3) 个答案

  1. # 1 楼答案

    好的,我找到了解决问题的方法,其实很简单
    我做了以下事情-

    在属性文件中-

    dir.loc=H:/Main/dir one/dir - two/dir3/dir four/Run
    

    在配置java文件中-

    String s1 = properties.getProperty("dir.loc");
    

    在我的java程序中-

    File tempF = new File(s1);
    File dirLoc = new File(tempF.getAbsolutePath());
    

    dirLoc.listFiles().length;给出一个数字

    @barti_ddu关于getAbsolutePath()的评论让我开始思考可能正在使用它
    这个解决方案有什么问题吗?还是不太合适

    谢谢大家

  2. # 2 楼答案

    看起来你只需要调整你房产的价值。 在您显示的代码中

      dir.loc=H:/Main/dir one/dir - two/dir3/dir four   
    

    有尾随空格

    这样做:

    String s1 = properties.getProperty("dir.loc").trim();
    String s2 = properties.getProperty("dir.name").trim();
    

    修好了吗

  3. # 3 楼答案

    是的,你说得对。从属性文件中读取值时,这些值会出错。 改为这样做:

    dir.loc="H:/Main/dir one/dir - two/dir3/dir four"