繁体   English   中英

我应该将资源用于Java程序?

[英]Where should I put my resources for a Java program?

我正在用Java编程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();

警告 :我不使用Eclipse,我从未使用过Eclipse,我对Eclipse的了解相当于阅读其他帖子并在此处回答问题

在您的项目下,创建一个名为resources的目录。 在此处,您可以在应用程序中放置要访问的所有“资源”。 这些将与您的应用程序捆绑为嵌入式资源。

从您的应用程序中使用

this.getClass().getResource("/ah.wav")

要么

this.getClass().getResource("/resources/ah.wav")

假设您将文件放在resources路径的顶层。 如果他们在子目录中,您需要提供完整路径...

清洁,构建和测试

我在src创建一个类似src/main/resourcesresources文件夹。 想看一下Maven ,它是项目管理和理解工具,可以帮助项目组织。

最佳做法是创建一个文件夹(取决于您的包结构),称为resresources ,您将保留项目相关资源,如任何图像或声音文件。

根据偏好,将此文件夹放在主项目文件夹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"或存储文件的位置)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM