Java资源作为文件

Java资源作为文件

在Java中是否有一种方法可以在通过类加载器从JAR检索的资源上构造一个File实例?

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

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


喵喵时光机
浏览 430回答 3
3回答

MYYA

ClassLoader.getResourceAsStream和Class.getResourceAsStream绝对是加载资源数据的方法。但是,我不认为有任何方法可以“列出”类路径元素的内容。在某些情况下,这可能是不可能的-例如,ClassLoader 能根据请求的资源名称动态生成数据。如果你看看ClassLoaderAPI(基本上就是类路径机制的工作原理)您将看到没有什么可以做您想做的事情。如果你知道你真的有一个JAR文件,你可以用ZipInputStream找出可用的东西。这意味着您将对目录和JAR文件有不同的代码。如果文件是单独创建的,另一种方法是包含可用资源列表的清单文件。将其打包到JAR文件中,或者将其作为文件系统包含在文件系统中,并在为用户提供资源选择之前加载它。

九州编程

我也遇到了同样的问题,能够使用以下方法:// Load the directory as a resourceURL dir_url = ClassLoader.getSystemResource(dir_path);// Turn the resource into a File objectFile dir = new File(dir_url.toURI());// List the directoryString files = dir.list()
打开App,查看更多内容
随时随地看视频慕课网APP