Java 目录名中有空格的文件对象
我试图列出目录中的文件数。但我不能这样做,我怀疑这与父目录名中的空白有关。Java 目录名中有空格的文件对象,java,file-io,Java,File Io,我试图列出目录中的文件数。但我不能这样做,我怀疑这与父目录名中的空白有关。 我所做的是在.properties文件中,将值设置为- 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.na
我所做的是在.properties文件中,将值设置为-
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();
现在这里的fList
是null
H驱动器位于另一台远程计算机上,我估计java程序会尝试在本地定位“Run”目录,而不是在H驱动器上找到它,因为它没有找到“Run”,所以列表返回
null
当我尝试在一个简单的java类中使用-
File f = new File("H:/Main/dir one/dir - two/dir3/dir four", "Run");
然后我用f.listFiles().length得到结果代码>
所以我想它可能需要从属性文件中提取值并将其分配给字符串变量
我的假设正确吗?
这个问题的可能解决方案是什么 是的,你是对的。从属性文件中读取值时,这些值会出错。
改为这样做:
dir.loc="H:/Main/dir one/dir - two/dir3/dir four"
看起来您只需要调整属性的值。
在您显示的代码中
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();
修复它?好的,我找到了解决问题的方法,其实很简单。
我做了以下事情-
在属性文件中-
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()的评论让我开始思考可能正在使用它。
这个解决方案有什么问题吗?还是不太合适
谢谢大家。非常抱歉,这里只是输入错误,但实际值不包含任何尾随空格。抱歉,不起作用。我正在尝试各种方法来解决这个问题。用escape char等,还没有成功。但是当我使用“正如你所建议的那样,然后当我使用sysoutf.getName()
时,结果是Run”
@Swift-Tuttle不确定我是否理解你的评论,你说的“不起作用”是什么意思?如果你做一个System.out.println(dir.loc)
它是否显示正确的值?如果我做一个System.out.println(dir.loc)
它的o/p是“H:/Main/dir-one/dir-two/dir3/dir-four”
。因此,为了创建文件对象,我将包含此项的字符串变量作为第一个参数传递,并将包含Run的字符串变量传递。然后getAbsolutePath()
作为c:\ProgramFiles\eclipse\“H:\Main\dir one\dir-two\dir3\dir four”\Run
和getName()
作为Run如何加载属性以及新文件(s1,s2)的值是多少。getAbsolutePath()
?这是getAbsolutePath()的打印内容
作为'H:\Main\dir one\dir-two\dir3\dir four\Run',我只是作为-properties.load(Thread.currentThread.getContextClassLoader().getResourceAsStream(“Test.properties”))加载属性文件代码>嗯,这似乎和你的“直接”例子没什么不同,奇怪的是。重新检查您对驱动器“H”的访问权限;此外,您还可以尝试设置UNC路径(以\\machine\share\target
的形式)。@barti\u ddu能够解决此问题,并发布了我的解决方案。