java - 从java项目中的资源文件夹中获取所有文件名

标签 java resources

现在我正在手动将歌曲文件名写入字符串数组,然后将字符串发送到 InputStream is = this.getClass().getResourceAsStream(filename); 以播放歌曲。

我宁愿遍历资源文件夹中的所有歌曲名称并将它们加载到数组中,这样每次添加歌曲时,我都不需要手动将其输入到数组中。

我所有的歌曲都位于 resources 文件夹中:

enter image description here

是否有 java 方法或其他方法来获取这些名称?

当我导出为 .jar 时,这些文件需要工作。

我以为我可以使用这样的东西?

InputStream = this.getClass().getClassLoader().getResourceAsStream("resources/");

有没有 listFiles() 之类的东西?

谢谢

最佳答案

不,因为类路径在 Java 中是动态的。任何额外的 Jar 都可以构成一个包,类加载器可以像想象的那样动态,甚至可以根据需要动态创建类或资源。

如果您有一个特定的 JAR 文件并且您知道该 JAR 文件中的路径,那么您可以简单地将该文件视为存档并通过 java.util.jar.JarFile 访问它,这样您就可以列出文件中的所有条目。

JarFile jar = new JarFile("res.jar");
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
    JarEntry entry = entries.nextElement();
    System.out.println(entry.getName());
}

如果您想在不知道 JAR 文件名和路径的情况下执行此操作(例如,通过 JAR 本身中的类),您需要按照 Evgeniy 的建议动态获取文件名;只需使用您自己的类名(包括包;您的屏幕截图看起来像是在默认包中,这是个坏主意)。

关于java - 从java项目中的资源文件夹中获取所有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247898/

相关文章:

java - 在android中自定义图片库

java - HQL 缺少关键字

wpf - 从 DataTemplate 内的资源绑定(bind)

wpf - XamlParseException关于从资源设置图像

java - "nested exception is java.sql.SQLException: Incorrect syntax near '? ' "

java - Spring 通过 HTTP POST 发送 JSON 数据不起作用

c++ - Windows LoadMenu 错误 : "The specified resource name cannot be found in the image file."

ios - 将下载的资源(图像)添加到 bundle 中?

android - ListView/GridView 中按下项目的默认背景颜色

java - 如何包含 src/main/java 中的资源