2013-03-05 72 views
2

我正在尝试从我的可执行文件.jar文件读取文件,但它始终获取空值。Java InputStream无法从JAR内读取文件

我有这样的代码:

public DanceEventTicketScanner(String txtfile){ 
    sv = new ScannerView(this); 
    findcode = false; 
    InputStream is = this.getClass().getResourceAsStream("/resources/copy.csv"); 
    if (is == null) JOptionPane.showMessageDialog(null, "Resource not located."); 
} 

在JAR文件我有(正常)含有我所有的.class文件,并在同一目录下的一个文件夹命名为资源持有的copy.csv文件的文件夹。

但是,该代码无法识别该文件。

有没有人有任何想法?

+0

相关问题:http://stackoverflow.com/questions/3369794/how-can-i-read-file-from-jar-in-java – 2013-03-05 18:36:48

+0

在什么目录下? /资源需要位于JAR文件的根目录中才能使代码正常工作。 – EJP 2013-03-06 00:17:15

回答

2

去除第一slach

InputStream is = this.getClass().getResourceAsStream("resources/copy.csv"); 
1

的getClass()。的getResourceAsStream(..)将使用一个路径相对于所述类(因此INC。包显示目录)。 getClass()。getClassLoader()。getResourceAsStream(..)将使用绝对路径。所以改变你的代码,并得到类加载器,它会工作。

+0

所以如果我使用第二个你说的,我仍然只是给“/resources/copy.csv”作为参数? – user1604443 2013-03-05 18:43:57

+2

这个答案不正确。看到Javadoc。如果指定了绝对路径,它将使用它。 – EJP 2013-03-06 00:17:51