我正在尝试列出目录中的文件数。但是我无法理解,我怀疑它与父目录名称中的空白区域有关 我正在做的是在.properties文件中我将值设置为 -
dir.loc=H:/Main/dir one/dir - two/dir3/dir four
dir.name=Run
现在在jave文件中,我将这些值设置为String变量为 -
String s1 = properties.getProperty("dir.loc");
String s2 = properties.getProperty("dir.name");
我创建了一个File对象 -
File f = new File(s1, s2);
File[] fList = f.listFiles();
现在,fList
为null
;
H驱动器在另一台远程计算机上,我认为java程序试图在本地找到“运行”目录,而不是在H驱动器上找到它,因为它没有找到“运行”列表返回null
。
当我尝试使用简单的java类时 -
File f = new File("H:/Main/dir one/dir - two/dir3/dir four", "Run");
然后我用f.listFiles().length;
所以我想它可能需要从属性文件中提取值并将其分配给String变量。
我的假设是否正确? 什么可能解决这个问题?
答案 0 :(得分:2)
是的,你是对的。从属性文件中读取值时,值会被搞砸。 这样做:
dir.loc="H:/Main/dir one/dir - two/dir3/dir four"
答案 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 :(得分:0)
看起来您只需要修剪属性的值。 在您显示的代码中,
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();
修好吗?