2016-08-29 134 views
0

我正在嘗試訪問存儲在文件夾Resources中的High_Scores.txt文件。正在讀取資源文件Netbeans

我的項目樹是這個樣子:

Project Tree

我使用如下所示訪問該文件的代碼。檢查了這個similar question,但解決方案不適用於我的情況。

File file = new File(getClass().getClassLoader().getResource("/Resources/High_Scores.txt").getFile()); 

但是我一直在得到NULLPointerException。在這方面我不明白這個例外。有人能指出我做錯了什麼嗎?

更新:

如果我更改代碼這樣:

File file = new File(getClass().getClassLoader().getResource("Resources/High_Scores.txt").getFile()); 

我得到FILENOTFOUNDException

+0

@Tunaki這個問題是跟上這個問題。你難道不知道我已經嘗試過這個問題的答案,但仍然面臨一個問題。 –

+0

您不能像在這裏嘗試的那樣以JAR文件的形式訪問資源,這根本行不通。您必須使用'InputStream',如鏈接問題所示。 – Tunaki

+0

謝謝。現在你應該像這樣回答這個問題,而不是標記重複.- –

回答

0

對於讀取文件時,您可以使用InputStream,而不是新的File()像這樣(讓我們假設你是打電話來讀取文件從Board類)

InputStream stream = Board.class.getResourceAsStream("/Resources/high.txt"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); 
    StringBuilder out = new StringBuilder(); 
    String line; 
    while ((line = reader.readLine()) != null) { 
     out.append(line); 
    } 
    System.out.println(out.toString()); //Prints the string content read from input stream 
    reader.close(); 

,或者您可以使用ClassLoader對象

File file = new File(ClassLoader.getSystemResource("/Resources/high.txt").getFile()); 

如果特定目錄包含文件夾

File file = new File(ClassLoader.getSystemResource("/Resources/high.txt").toURI()); 
+0

我想使用'File'方法。當然會有一種使用文件讀/寫文件的方法。我也想寫,所以這個inputstream方法不適合我。 –

+0

@MohsinAnees看更新回答 –

+0

NULLPointerException仍然存在。 @Tunaki說是正確的,在JAR裏面使用文件是不可能的? –