2016-04-06 116 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()); 

感謝這種方法,你將能夠快速知道絕對路徑是否正確。