2013-06-03 66 views
0

...爪哇 - FileNotFoundException異常通過運行這個閱讀文本文件

File file = new File("Highscores.scr"); 

我不斷收到這個錯誤,我真的不知道怎麼去解決它。 該文件當前位於我的源文件包中,使用我的.java文件。 我可以很容易地通過指定路徑來讀取文件,但我打算在多臺計算機上運行此文件,所以我需要該文件與程序一起移植。 這個問題不是關於閱讀文本文件,而是指定它的位置而不使用絕對路徑。 我搜索了答案,但我得到的答案只是「指定名稱」和「指定絕對路徑」。 id發表圖片,使其更清楚,但我沒有10代表這樣做:/ 我該怎麼做?

歡呼聲。

+0

您的班級位於哪個目錄? –

+2

嘗試'System.out.println(新文件(「。」)。getAbsolutePath())'看看這是否是正確的目錄。 –

+0

沒有問題發佈圖像某些機構會編輯它 – pinkpanther

回答

1

做到這一點,最好的辦法是把它放在你的classpath然後getResource()

package com.sandbox; 

import org.apache.commons.io.FileUtils; 

import java.io.File; 
import java.io.IOException; 
import java.net.URISyntaxException; 
import java.net.URL; 

public class Sandbox { 

    public static void main(String[] args) throws URISyntaxException, IOException { 
     new Sandbox().run(); 
    } 

    private void run() throws URISyntaxException, IOException { 
     URL resource = Sandbox.class.getResource("/my.txt"); 
     File file = new File(resource.toURI()); 
     String s = FileUtils.readFileToString(file); 
     System.out.println(s); 
    } 


} 

我這樣做是因爲我假設你需要一個File。但是,如果您有一個採用InputStream的API,則最好使用getResourceAsStream代替。

注意路徑/my.txt。這意味着,「獲取名爲my.txt的文件,該文件位於類路徑的根目錄中」。我確信您可以閱讀更多關於getResourcegetResourceAsStream的信息,以瞭解更多關於如何執行此操作的信息。但關鍵在於對於任何給予可執行文件的計算機(只要不在文件路徑中移動文件),文件的類路徑都是相同的。

順便說一句,如果你在new File的行上得到空指針異常,那意味着你沒有爲文件指定正確的類路徑。

+1

使用 InputStream file = getClass()。getResourceAsStream(「/ Highscores.scr」); 它工作得很漂亮! 感謝tieTYT! – Joe

0

據我記得默認目錄與您的項目文件夾級別相同。把文件放高一級。

-Project/ 
----src/ 
----test/ 
-Highscores.scr 
0

如果你在你的Eclipse構建代碼,那麼你需要把你的Highscores.scr到項目文件夾。嘗試一下並檢查。

0

您可以嘗試運行以下示例程序,以檢查程序正在拾取哪個目錄。

File f = new File("."); 
System.out.println("Current Directory is: " + f.getAbsolutePath());