我做了一个需要在其上播放背景音乐的小游戏,我有图像,txt文件和音频文件,除了音频文件之外,它们都在导出JAR后工作。
这是我用来导入的代码:
图片:
(new ImageIcon(getClass().getResource("/data/131868.jpg"))
文本文件:
BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/data/dictionnaire.txt")));
音频文件(我还包括搜索时发现的代码):
File f =new File(Main.class.getResource("/data/gmu.mp3").getFile());
final Player p=Manager.createRealizedPlayer(f.toURI().toURL());
p.start();
while(true){
if(p.getMediaTime().getSeconds()==p.getDuration().getSeconds()){
p.stop();
p.setMediaTime(new Time(0));
p.start();
}
}
基本上File
对象是:File f = new File("/data/gmu.mp3")
我刚刚添加了修改,使其看起来像其他人一样......
它在Eclipse中工作,但不适用于JAR。
答案 0 :(得分:1)
你最好知道:文件只是文件的名称,而不是文件本身。就像门牌号码一样,它告诉你房子的位置,但不代表房子。
所以,你可以像这样使用它:
InputStream is = this.getClass().getResourceAsStream("/data/gmu.mp3");
File fi = new File(is);
告诉我结果:)
答案 1 :(得分:0)
尝试在导出jar之前将gmu.mp3
置于源内。
导出jar时,它会包装源文件夹中的所有有趣代码。 File f = new File("/data/gmu.mp3")
只是将程序指向文件系统中的文件名gmu.mp3。如果将gmu.mp3
放在源文件夹中并更新File
构造函数以反映新位置,则mp3
应该包含在jar中以及所有代码中。
让我知道它是怎么回事--Scott
答案 2 :(得分:0)
java.io.File将jar文件表示为“ThePacked.jar!/path/inside/file.mp3”,这在用作文件时会出现问题。
要读取jar文件的内容,可以从getResourceAsStream(String filename)给出的InputStream中读取。
或
要将文件用作真正的java.io.File,(我所做的是)从InputStream读取它并将其复制到jar外部的位置(例如,到temprary文件)。