1

我正在尝试访问当前工作目录中的文件。

我得到的错误是

 [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

我相信问题与文本文件名之前的反斜杠有关。在查看目录时,我可以看到文件在那里。

4

3 回答 3

6

您可以使用 Path 库而不是自己创建路径:

Path p = Paths.get(System.getProperty("user.dir"))
                 .resolve(filename);
File f = p.toFile();
于 2013-09-20T19:50:33.963 回答
2

不要写入"/"分隔路径元素,而是使用它来获取适合您平台的正确路径分隔符:

File.separator 
于 2013-09-20T19:48:25.237 回答
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,因为不使用硬编码值会使代码的意图更清晰。

于 2013-09-20T20:02:27.583 回答