我正在尝试访问当前工作目录中的文件。
我得到的错误是
[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
我认为问题与文本文件名在不同方向之前的反斜杠有关。查看目录后,我可以看到文件在那里。
答案 0 :(得分:6)
您可以使用Path库而不是自己创建路径:
Path p = Paths.get(System.getProperty("user.dir"))
.resolve(filename);
File f = p.toFile();
答案 1 :(得分:2)
不要将"/"
写入单独的路径元素,而是使用它来获取适合您平台的正确路径分隔符:
File.separator
答案 2 :(得分:0)
您的fileName
似乎包含一个嵌入式反斜杠:它是Documents/DataComProject1\confA.txt
。由于反斜杠是文件名中的有效字符,因此假定DataComProject1\confA.txt
是文件的名称,而不是目录中文件的名称。
要修复文件名,您必须将嵌入的\\
更改为正确的分隔符:
fileName = fileName.replace('\\', File.separator);
bufferedReader = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/" + fileName));
在每个系统上使用斜杠/
作为目录分隔符是正确的,但在这里我使用File.separator,因为不使用硬编码值会使代码的意图更清晰。