在java中使用声音

0 java

嗨...我搜索了网站,发现另一个正常工作的代码.

现在我有另一个问题:

当我从blow类创建对象并将音频地址发送到其构造函数时,我必须发送完整的地址,如:

"C:\ Documents and Settings\TheHero\My Documents\NetBeansProjects\project1\src\project1\s1.wav"

但我想使用这个代码只是声音的名称:"s1.wav".

我复制的声音进入src文件夹,然后使用"s1.wav",结果是"java.io.FileNotFoundException".

如果我使用完整的声音地址,当我在另一台计算机上运行该程序时,它不起作用.我是正确的?

//**************

公共类MusicPlayer {

private String filename;

public MusicPlayer(String filename) {
    this.filename = filename;
}
public void play() {
    try {
            InputStream in = new FileInputStream(filename);
            AudioStream as = new AudioStream(in);
            AudioPlayer.player.start(as); 

    } catch (IOException e) {
            e.printStackTrace();
    }          
}
Run Code Online (Sandbox Code Playgroud)

//************

我对图像有同样的问题.当我使用这些代码时,我必须使用完整的图像地址

     File input = new File(imageName);
     image = ImageIO.read(input);
Run Code Online (Sandbox Code Playgroud)

请有人帮助我!我真的需要这些!谢谢大家......

Ada*_*ski 6

您可以使用URL来检索图像和声音文件.例如:

new ImageIcon(getClass().getResource("/com/foo/myimage.png")));
Run Code Online (Sandbox Code Playgroud)

...将从com.foo包中检索图像文件,假设它位于某个地方的类路径上(例如捆绑在一个jar文件中).

编辑

对于声音片段,您采取类似的方法; 例如:

URL url = getClass().getResource("/com/foo/sound.wav");
AudioStream as = new AudioStream(url.openStream());
Run Code Online (Sandbox Code Playgroud)