2015-06-14 104 views
0

有許多類似的問題,但這不是重複的。這與「無法訪問Jar文件中的文件」類似,但略有不同。通過大量的實驗和論壇閱讀,我設法訪問文件的內容並在Jar文件中顯示它們。問題是,如果我將文件放在一個文件夾中,那麼即使它在我運行類文件時起作用,我的程序也不會工作。這是一個問題,因爲當我製作遊戲和其他程序時,我喜歡爲像「地圖」和「spritesheets」這樣的組織提供不同的文件夾。我做了一個實驗性計劃,以找出問題的路線,這裏是它的代碼:訪問Jar文件中的文件和文件夾

 try { 
       InputStream is = getClass().getResourceAsStream("folder\\test.txt"); 
       InputStreamReader isr = new InputStreamReader(is); 
       BufferedReader br = new BufferedReader(isr); 
       String line; 
       while ((line = br.readLine()) != null) { 
       System.out.println(line); 
       } 
      br.close(); 
      isr.close(); 
      is.close(); 

     } catch (Exception ex) {} 

我沒有做任何事情在閉鎖段,因爲我已經用它來找到有問題的區域。這是我的目錄結構:

JarFileText 
    classes 
    com 
     sayedhajaj 
     folder 
      test.txt 
     JarFileText.class 
     test.txt 
    source 
    com 
     sayedhajaj 
     JarFileText.java 

當我嘗試訪問不在該文件夾中的文本文件的副本時,一切工作正常。但是,如果我嘗試訪問「文件夾」中的副本,則返回null。

+2

'趕上(例外){}' - 說它並非如此。這對我來說沒有任何意義:''我沒有在捕捉部分做任何事情,因爲我已經用它來找到有問題的區域。「' –

+0

赦免?我不明白你的意思。 –

+0

@SayedHajaj你必須抓住你的例外並展示它們...... 50%的解決方案可能就在那裏! – ha9u63ar

回答

2

這是解決方案:

 try { 
       InputStream is = getClass().getResourceAsStream("folder/test.txt"); 
       InputStreamReader isr = new InputStreamReader(is); 
       BufferedReader br = new BufferedReader(isr); 
       String line; 
       while ((line = br.readLine()) != null) { 
       System.out.println(line); 
       } 
      br.close(); 
      isr.close(); 
      is.close(); 

     } catch (Exception ex) {}