2

当涉及到来自例如的输入源时,是否有一个好的 Java 库可以透明地处理资源的 I/O。java项目/文件夹或jar档案?

我想在我的应用程序中使用相同的代码来读取资源:

  1. 从 Eclipse 运行代码(来自源代码)
  2. 运行已部署的应用程序(二进制文件)
  3. 从文件夹 (src/bin) 中获取资源列表。

通常我会这样做:

  URL resource = this.getClass().getClassLoader().getResource("someResource.ext");

假设资源在类路径上,从源代码和二进制文件都可以正常工作。但是在某些项目中,只有子文件夹位于类路径上,而不是其内容(以避免必须将所有文件指定为单独的资源):

project
 src
 resources
    someResource.txt
    subFolder
       -> resA.txt
       -> resB.txt
       -> resC.txt
          ....

在这种情况下,我需要像这样做一些低级意大利面条:

http://www.java-gaming.org/topics/how-to-check-if-a-url-is-a-directory/21435/view.html

我看过一个 apache.commons-io,但它并不完全符合我的需要。对于处理 src 和 bin 的嵌套文件夹/资源的其他库有什么建议吗?

编辑:

正如下面所推荐的,我正在尝试使用此处描述的 URL 协议处理程序:

带有内嵌图像的 JEditorPane

但我不确定我是否完全理解它。在一个项目中,我依赖一个 jar 文件,里面有一个文件夹:

myjar.jar
 myresources
   > fileA.txt
   > fileB.txt
   > fileC.txt

在我的应用程序中,我这样做:

URL url = this.getClass().getClassLoader().getResource("myresources");
System.out.println(url.getPath());
Handler.install();
URLConnection con = new DataConnection(url);
try {
  inputStream = con.getInputStream();
} catch (IOException e) {
  e.printStackTrace();
}

从哪里复制 DataConnection 和 Handler:

带有内嵌图像的 JEditorPane

但我看不出这如何帮助我获取“myresources”文件夹中的资源。我显然没有以正确的方式使用它。

4

1 回答 1

0

在 java 7 中有zip 文件系统和文件系统的其他概括。

当然,您也可以创建URL 协议处理程序

于 2012-12-12T20:07:29.577 回答