我目前正在开发一个项目,可以在点击按钮时播放某些歌曲。 我现在有我的代码工作,以便它正确播放mp3文件,但它不是我想要的方式。现在我只是从我的桌面引用mp3文件,但我希望能够从项目本身引用它。我创建了一个名为resources的源文件夹,我在其中有一个名为music的文件夹,我将mp3文件放入其中。我虽然无法确定如何正确引用mp3文件。
这是我当前使用桌面播放歌曲的代码:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
public class MP3 {
private String filename;
private Player player;
// constructor that takes the name of an MP3 file
public MP3(String filename) {
this.filename = filename;
}
public void close() {
if (player != null)
player.close();
}
// play the MP3 file to the sound card
public void play() {
try {
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
} catch (Exception e) {
System.out.println("Problem playing file " + filename);
System.out.println(e);
}
// run in new thread to play in background
new Thread() {
public void run() {
try {
player.play();
} catch (Exception e) {
System.out.println(e);
}
}
}.start();
}
// test client
public static void main(String[] args) {
String filename = "/Users/username/desktop/LoveStory.mp3";
MP3 mp3 = new MP3(filename);
mp3.play();
// when the computation is done, stop playing it
mp3.close();
// play from the beginning
mp3 = new MP3(filename);
mp3.play();
}
}
答案 0 :(得分:0)
将它放在resources
目录中,就像你做的那样,然后用这样的东西来引用它:
MP3.class.getResource("/resources/LoveStory.mp3");
这样做的好处是它应该来自.jar
文件,但也可以来自Eclipse(或者你正在使用的任何东西)。
如果您希望将其视为InputStream
,它看起来就像您一样,那么您可以使用getResourceAsStream()
方法:
InputStream stream = MP3.class.getClassLoader().getResourceAsStream("/resources/LoveStory.mp3");
放置resources
目录的确切位置取决于您的设置,但src
内部可能正确。