使用System.getProperty(“user.dir”)时获取FileNotFoundException

时间:2013-09-20 19:47:34

标签: java

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

我得到的错误是

 [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

我认为问题与文本文件名在不同方向之前的反斜杠有关。查看目录后,我可以看到文件在那里。

3 个答案:

答案 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,因为不使用硬编码值会使代码的意图更清晰。