从jar文件访问该文件夹

时间:2013-02-02 10:14:07

标签: java

我正在尝试使用一个jar文件,它本身就是另一个Web项目中的Web应用程序。在我使用eclipse导出到jar功能创建的jar中,我将owl文件存储在一个文件夹中。要在jar中的代码中使用相对路径,我可以使用

访问它
MyClass.class.getResource("/folderName").getPath(); 

这在我部署(glassfish)并将项目用作单独的应用程序时工作正常。但是当我在另一个项目中使用相同的时候,我改变了路径:

 BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

ArrayList<File> filesFromCommonOntology = new ArrayList<File>();
while(str = br.readLine() != null)
{
  File f = new File(line);
  System.out.println(f);
  filesFromCommonOntology.add(f);
}
for (int i = 0; i < filesFromCommonOntology.size(); i++)
{

file =  filesFromCommonOntology.get(i);
    String filePath = file.getPath();
    Model timeModel = FileManager.get().loadModel(filePath,
ApplicationConstants.N3);
  }

但是当我运行项目时,我得到了行

的空指针异常
BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

将应用程序打包到jar中时,无法枚举文件夹中的文件。甚至很难想象它是如何工作的:你打开一个文件夹作为inptu流并以那种方式读取文件名(在那个文件夹中)?

最简单的方法是添加一个包含文件夹中条目的文本文件,可能还有一些描述。 MyClass.class.getResourceAsStream应该从jar中打开文件(而不是文件夹)。

如果你有非常多的文件,你也可以尝试重新打开自己的jar作为ZipFile,然后你可以使用ZipFile API搜索你文件夹中的条目。然而,这更复杂。