当前位置: 首页 > 面试题库 >

Java资源作为文件

拓拔元徽
2023-03-14
问题内容

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

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

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


问题答案:

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

在某些情况下,这可能根本是不可能的-例如,a ClassLoader 可以根据要求的资源名称即时生成数据。如果看一下ClassLoaderAPI(基本上是类路径机制的工作原理),你会发现没有任何事情可以做。

如果你知道实际上有一个jar文件,可以将其加载ZipInputStream以查找可用的文件。这将意味着你将为目录和jar文件使用不同的代码。

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



 类似资料:
  • 我正在尝试从类路径/JAR 文件作为文件对象访问资源。我知道这是使用输入流对象的首选方法,但我使用的是需要文件对象的外部库(WorldEdit)。 这是我的代码: 现在,当我还在eclipse中时,访问资源的两种方式都可以完美地工作并产生以下输出: 但是,在将代码导出到 JAR 存档后,代码将失败: 因此,我一直在寻找一种方法,要么直接以文件形式访问资源,要么使用InputStream并将该Inp

  • 问题内容: 我必须阅读一个包含字符串列表的文件。我试图遵循建议这个职位。两种解决方案都需要使用,但使用而不是a 作为参数。 我需要一个。 这篇文章 将 是我的问题,除非OP被劝说不要完全使用文件。如果要使用Apache方法,则需要一个文件,这是我最初遇到的问题的首选解决方案。 我的文件很小(大约一百行),每个程序实例一个文件,因此我不必担心在内存中有另一个文件副本。因此,我可以使用更基本的方法来读

  • 问题内容: 我想使用jar文件中的java代码播放.wav文件作为资源。我的代码看起来像这样- 我的jar文件之一中存在WindowsNavigationStart.wav文件。但是得到以下异常- 请给我一个解决方案。谢谢你们。 问题答案: 更改: 至:

  • 问题内容: 在我的Spring 3.0应用程序中,我有一些资源。在运行时,我需要其中一些作为(或其他类型)。我该如何找回它们?是否可以正常注射? 问题答案: 这是通过注释执行此操作的最简单方法:

  • Puppet 的 file 资源有一个实用功能,那就是可以为文件指定多个源。 Puppet 会按顺序查找每一个。如果第一个不存在,就继续查找下一个,以此类推。 你可以利用这个功能指定一个默认文件源的替代品, 若一个甚至一系列替代品不存在就会使用默认的(最后一个列出的)文件源。 操作步骤 添加如下的类到你的配置清单: class mysql::app-config( $app ) { file

  • 默认情况下 Nuxt 使用 vue-loader、file-loader 以及 url-loader 这几个 Webpack 加载器来处理文件的加载和引用。对于不需要通过 Webpack 处理的静态资源文件,可以放置在 static 目录中。 Webpack 构建 默认情况下, vue-loader自动使用 css-loader 和Vue模板编译器来编译处理vue文件中的样式和模板。在此编译过程中