2015-06-14 138 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) {}