2016-04-06 75 views
1

我正在尝试访问项目文件夹内的文本文件output.txt。下图显示了文件夹结构。无法访问java项目中的文本文件

enter image description here

String file=".\\testFiles\\output.txt"; 
BufferedReader br=new BufferedReader(new FileReader(file)); 

当我尝试使用上面的代码中访问该文件,我得到下面的异常。

java.io.FileNotFoundException: .\testFiles\output.txt (No such file or directory) 

我试过不同的文件路径格式,但都没有工作。我认为问题出在文件路径格式上。

在此先感谢。

+1

可能的重复:http://stackoverflow.com/questions/22978170/java-io-filenotfoundexception-in-eclipse – xploreraj

+0

除了已经给出的答案,如果在Java中硬编码路径,请使用正斜杠。 – Axel

+0

谢谢大家的回复。最后,我决定暂时保持完整的绝对路径。下次我肯定会提及所有评论和答案。 – sAm

回答

1

如果我没记错的话,你可以得到一个文件夹/文件在当前目录中,像这样:

File folder = new File("testFiles"); 

然后你就可以得到absolutePath和创造它一个新的文件,像这样打开文件:

File file = new File(folder.getAbsoluteFile() + File.separator + "output.txt"); 

我不知道,但我想你也可以这样做:

File file = new File("testFiles/output.txt"); 

我希望日是帮助:)

P.S.这都是未经测试的,所以它可能无法正常工作。

-2

您必须声明你的文件作为一个新的文件:

File yourFile = new File("testFiles/output.txt"); 
+2

1.不,你不必这样做。 2.它不会解决问题。 –

1

的事实,你有一个WebContent文件夹,我想这是一个web项目,有可能打包成一个战争看?在这种情况下,你会想要做的就是包装各自的文件与类和用这样的访问它一起:

Thread.currentThread().getContextClassLoader().getResourceAsStream("output.txt") 

如果添加testFiles文件夹作为源文件夹上面的代码就可以了(这意味着它会被打包带类,并在运行时可用)

的好处是,这样的路径可以保持相对的,没有必要去绝对

+0

+1 for上面的代码将工作,如果你添加testFiles文件夹作为源文件夹(这意味着它将打包与类并在运行时可用) – Teddy

1

我相信,你的问题是由于这样的事实你依赖于一个相对路径,因为你的路径以一个点开始,这意味着它将相对于用户目录(值为o f系统属性user.dir),所以我认为你的用户目录不符合你的期望。你可以做什么来调试是这样的:

System.out.println(new File(file).getAbsolutePath()); 

感谢这种方法,你将能够快速知道绝对路径是否正确。