繁体   English   中英

从文件夹/ jar文件读取资源时,用于提取I / O的Java库吗?

[英]Java library for abstracting I/O when reading resources from folders/jar files?

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

在以下情况下,我想使用相同的代码读取应用程序中的资源:

  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”文件夹中的资源。 我显然没有以正确的方式使用它。

Java 7中有zip文件系统文件系统的其他概括。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM