Java 资源作为文件

2022-08-31 08:24:20

在Java中,有没有办法在通过类装入器从jar中检索的资源上构造一个实例?File

我的应用程序使用 jar(默认)或运行时指定的文件系统目录(用户输入)中的一些文件。我正在寻找一种一致的方式
,a)将这些文件作为流
加载b)分别列出用户定义目录中的文件或jar中的目录中的文件

编辑:显然,理想的方法是完全远离。有没有办法从类路径加载目录并列出其内容(其中包含的文件/实体)?java.io.File


答案 1

我遇到了同样的问题,能够使用以下内容:

// Load the directory as a resource
URL dir_url = ClassLoader.getSystemResource(dir_path);
// Turn the resource into a File object
File dir = new File(dir_url.toURI());
// List the directory
String files = dir.list()

答案 2

ClassLoader.getResourceAsStream并且绝对是加载资源数据的方法。但是,我不认为有任何方法可以“列出”类路径中某个元素的内容。Class.getResourceAsStream

在某些情况下,这可能根本不可能 - 例如,可以根据要求的资源名称动态生成数据。如果你看一下API(这基本上是类路径机制的工作原理),你会发现没有什么可以做你想做的。ClassLoaderClassLoader

如果您知道自己实际上有一个jar文件,则可以加载该文件以找出可用的文件。这意味着您将为目录和jar文件提供不同的代码。ZipInputStream

如果首先单独创建文件,另一种方法是包含一种包含可用资源列表的清单文件。将其捆绑在 jar 文件中或将其作为文件包含在文件系统中,并在为用户提供资源选择之前加载它。


推荐