访问可执行jar文件中的文件和文件夹

时间:2012-07-23 11:32:45

标签: java eclipse jar directory executable

我遇到以下问题: 我将Eclipse用于Java项目,我有以下结构:

  --> src
      --> package1
          ....
      --> package2
          ...

   -->dataFolder
       --> Folder1
            --> file1.xml
       --> Folder2
            file2.xml

在我的java项目中,我解析了dataFolder目录中的所有文件。这没问题,因为我可以使用eclipse项目的根目录,如下所示:

File dataStoreFolder = new File("dataFolder");
Some parsing......

但是当我将项目导出为可执行jar文件时,我再也无法访问这些文件了。当然那是因为它们不在我放置exec.jar文件的同一个文件夹中。但我不想将包含数据的整个文件夹复制到我的exec.jar文件中。我能以某种方式把它放在我的jar文件中吗? (我是通过将dataFolder添加到Java Build Path来实现的,但它仍然不像在Eclipse中那样工作)

有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

当您使用jar文件时,那些文件不再作为文件存在。

您绝对可以在jar文件中包含数据,但是您也需要更改访问它的代码。您不需要创建File对象,而是需要以下内容:

InputStream input = Foo.class.getResourceAsStream("/dataFolder/Folder1/file.xml");

所以你有两个可分离的任务:

  • 了解如何在jar文件中包含数据文件夹
  • 更改代码以正确访问数据

答案 1 :(得分:0)

是的,您可以将它们放在jar文件中。只需在Eclipse下创建dataFolder源文件夹,它就会将非Java文件复制到目标目录,并将它们添加到jar文件中。

进入jar文件后,您会得到file1.xml,如下所示:

InputStream in = SomeClass.class.getResourceAsStream("/Folder1/file1.xml");