从文件夹/jar文件中读取资源时用于抽象I/O的Java库?
当涉及到来自java项目/文件夹或jar归档的输入源时,是否有一个好的java库可以透明地处理资源的I/O 当我:从文件夹/jar文件中读取资源时用于抽象I/O的Java库?,java,io,Java,Io,当涉及到来自java项目/文件夹或jar归档的输入源时,是否有一个好的java库可以透明地处理资源的I/O 当我: 从eclipse运行代码(从源代码) 运行已部署的应用程序(二进制文件) 从文件夹(src/bin)获取资源列表 通常我会: URL resource = this.getClass().getClassLoader().getResource("someResource.ext"); 假设资源位于类路径上,从源代码和二进制文件都可以很好地工作。但在某些项目中,只有子文件夹位
URL resource = this.getClass().getClassLoader().getResource("someResource.ext");
假设资源位于类路径上,从源代码和二进制文件都可以很好地工作。但在某些项目中,只有子文件夹位于类路径上,而不是其内容(以避免将所有文件指定为单独的资源):
在这种情况下,我需要像这样做一些低级spagetti:
我已经看过apache.commons-io,但它并不完全符合我的需要。对处理src和bin的嵌套文件夹/资源的其他库有什么建议吗
编辑:
按照下面的建议,我尝试使用URL协议处理程序,如下所述:
但我不确定我是否完全理解它。在一个项目中,我依赖于一个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();
}
其中数据连接和处理程序是从以下位置复制的:
但我不知道这如何帮助我获取“myresources”文件夹中的资源。我显然没有以正确的方式使用它。在java 7和其他文件系统中有一些泛化
当然,您也可以创建。我并不真正理解这个问题。通常,给定资源是否在类路径中。。。在类路径的情况下,您需要一个完整的限定名(包+资源),在所有其他情况下,您可以使用外部路径引用或URL类加载器。问题可以归结为如何检查URL是否指向目录或文件。我只能找到这个:我在URL协议方法上有问题,请看我编辑的帖子,也许你有什么意见?
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();
}