我使用Eclipse编写Java编程。
我最近尝试在我的程序中播放声音文件。我这样做了:
URL url = this.getClass().getResource("ih.wav");
audioIn = AudioSystem.getAudioInputStream(url);
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();
当我尝试将ih.wav放在bin文件夹中时,这才有效,就像bin文件夹是我项目的“基本文件夹”一样。将文件放在项目的主文件夹中,不起作用。将它放在src文件夹中也不起作用。
有人可以向我解释将资源用于Java程序的位置吗?另外,如果我将资源导入Eclipse中,这有关系吗?感谢
编辑:
试图在主项目文件夹中创建一个资源文件夹,仍然给我一个NullPointerException:
URL url1 = this.getClass().getResource("res/ah.wav");
audioIn = AudioSystem.getAudioInputStream(url1);
clip1 = AudioSystem.getClip();
clip1.open(audioIn);
URL url2 = this.getClass().getResource("res/eh.wav");
audioIn = AudioSystem.getAudioInputStream(url2);
clip2 = AudioSystem.getClip();
clip2.open(audioIn);
URL url3 = this.getClass().getResource("res/ih.wav");
audioIn = AudioSystem.getAudioInputStream(url3);
clip3 = AudioSystem.getClip();
clip3.open(audioIn);
clip1.start();
clip2.start();
clip3.start();
答案 0 :(得分:5)
警告:我不使用Eclipse,我从未使用过Eclipse,我对Eclipse的了解相当于阅读其他帖子并在此处回答问题
在您的项目下,创建一个名为resources
的目录。在此处,您可以在应用程序中放置要访问的所有“资源”。这些将与您的应用程序捆绑在一起作为嵌入式资源。
从您的应用程序中使用
this.getClass().getResource("/ah.wav")
或
this.getClass().getResource("/resources/ah.wav")
假设您将文件放在resources
路径的顶层。如果它们位于子目录中,则需要提供完整路径...
清理,构建和测试
答案 1 :(得分:4)
我在resources
内创建一个src
文件夹,例如src/main/resources
。您想看看Maven,它是项目管理和理解工具,对项目组织有很大帮助。
答案 2 :(得分:2)
最佳做法是创建一个名为res
或resources
的文件夹(取决于您的包结构),您将保留项目相关资源,例如任何图像或声音文件。
根据偏好设置,将此文件夹放在主项目文件夹MyProject/res
中,或将其放在相关包中,例如main.java.res
修改
为了更多地遵循您的问题,我对getResources()
方法不太熟悉,所以我个人建议使用类似的代码:
File file = new File("ih.wav");
audioIn = AudioSystem.getAudioInputStream(file);
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();
应生成您要查找的结果,前提是您相应地更改了文件的路径(例如"main/resources/ih.wav"
或存储文件的位置。