繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM