[英]System.getProperty("user.dir") return " /"
[英]Getting FileNotFoundException when using System.getProperty(“user.dir”)
我正在尝试访问当前工作目录中的文件。
我得到的错误是
[java] java.io.FileNotFoundException: /u/user/Documents/DataComProject1\confA.txt
我猜这是导致这一行的原因:
bufferedReader = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/" + fileName));
每当我打印要与FileReader()一起使用的目录时,都会得到:
/u/user/Documents/DataComProject1/confA.txt
我认为问题与文本文件名指向不同方向之前的反斜杠有关。 在目录中查找后,我可以看到文件在那里。
您可以使用Path库而不是自己创建路径:
Path p = Paths.get(System.getProperty("user.dir"))
.resolve(filename);
File f = p.toFile();
不要写"/"
来分隔路径元素,而是使用它来获取适合您平台的正确路径分隔符:
File.separator
看起来您的fileName
包含一个嵌入式反斜杠:它是Documents/DataComProject1\\confA.txt
。 由于反斜杠是文件名中的有效字符, DataComProject1\\confA.txt
假定DataComProject1\\confA.txt
是文件名, DataComProject1\\confA.txt
不是目录中的文件名。
要修复文件名,您必须将嵌入的\\\\
更改为正确的分隔符:
fileName = fileName.replace('\\', File.separator);
bufferedReader = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/" + fileName));
在每个系统上都使用斜杠/
作为目录分隔符是正确的,但是在这里我使用File.separator,因为不使用硬编码值会使代码的意图更加清晰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.