2012-11-26 53 views
0

我想說我搜索了很多甚至谷歌和stackoverflow。關於這個問題有很多話題,但我沒有找到我需要的東西。如何在我的jar文件中獲得.txt文件?

我的問題是:

我想定義文件,該文件是在我自己的包folder.File的格式爲.TXT。 和文件是xxx\src\xxxx\myTXTFile.txt 我寫這篇文章的代碼來達到我的TXT:

File f = new File(xxx.class.getResource("pr.txt").getFile()); 

當我運行的NetBeans是它works.But當我編譯的代碼,然後點擊.jar文件會報告:

File not found 

我該怎麼辦?

+0

您確定這些文件在您的jar文件中可用嗎?檢查你的jar文件,並確保文件存在 – mhshams

+0

抱歉,你是什麼意思,我不明白?我的classes文件夾中的txt文件。 src/xxx/inhere – user1716182

+1

點擊「jar」會生成一個jar文件,它基本上是一個zip文件。找出這個文件的位置,解壓縮並查找你的.txt文件。如果不存在,請弄清楚如何讓NetBeans將.txt文件包含在正在生成的jar文件中。 –

回答

1

在IDE中的文件仍然還駐留在拉鍊外格式罐。因此被發現。對於罐內使用的文件:

OutputStream f = xxx.class.getResourceAsStream("pr.txt"); 

文件不起作用。

+0

我需要文件。是不可能的? – user1716182

+0

是不可能的,File代表一個OS文件;但下一個java將會看到許多編程文件系統的概括,比如zip文件系統。 @phoenix的解決方案將此資源複製到一個臨時文件,並使用它。你可以使用[File.createTempFile](http://docs.oracle.com/javase/7/docs/api/java/io/File.html#createTempFile(java.lang.String,%20java.lang.String) –

+0

OutputStream更通用:對於任何文件使用情況,總是可以使用'new FileOutputStream(file)'。 –

1

您可以使用此代碼到達您的TXT的文件:

File f = new File("xxxx/myTXTFile.txt"); 

,或者您必須保存txtfile在Tempfolder:

 InputStream is = getClass().getClassLoader().getResourceAsStream("xxxx/myTXTFile.txt"); 
     OutputStream os = new FileOutputStream(new File("/tmp/tempTXTFile.txt")); 

     while ((i = is.read(buffer)) != -1) 
     { 
      output.write(buffer, 0, i); 
     } 

     output.close(); 

     is.close(); 

     File f = new File("/tmp/tempTXTFile.txt"); 
+0

當我寫File f = new File(「xxxx/myTXTFile.txt」);這個文件不存在。我試試netbeans, – user1716182

+0

謝謝回答 – user1716182

相關問題