嗨......我搜索了网站,发现了另一个正常运行的代码。
现在我有另一个问题:
当我从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();
}
}
// ***********
我对图像有同样的问题。当我使用这些代码时,我必须使用图像的完整地址
File input = new File(imageName);
image = ImageIO.read(input);
请有人帮助我!我真的需要这些! 谢谢大家......
答案 0 :(得分:6)
您可以使用网址来检索图像和声音文件。例如:
new ImageIcon(getClass().getResource("/com/foo/myimage.png")));
...将从com.foo包中检索图像文件,假设它位于某个地方的类路径上(例如捆绑在一个jar文件中)。
修改强>
对于声音片段,您采取类似的方法;例如类似的东西:
URL url = getClass().getResource("/com/foo/sound.wav");
AudioStream as = new AudioStream(url.openStream());
答案 1 :(得分:1)
FileInputStream(filename)是关键。
文件名可以是绝对的或相对的。你似乎有两个问题。
1)。相对路径, s1.wav 将相对于正在运行的应用程序的工作目录,这几乎肯定不是您的src目录。
2)。不同机器上的绝对路径
C:\Documents and Settings\TheHero\My Documents\NetBeansProjects\ etc.
实际存在于远程机器上?
答案 2 :(得分:0)
不是将文件复制到 src ,而是将其复制到 bin 文件夹中。这是执行发生的地方。
如果不起作用,您可以致电:
Properties sysProps = System.getProperties();
然后遍历属性并查找当前工作目录。这就是你放置你的wav文件的地方。