2012-11-26 32 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

相关问题