我正在使用Netbeans,我正在试图弄清楚如何将所有库,音乐,图像等放在一个JAR文件中进行分发。我想我已经找到了库,但是音频,图像和其他类似的文件给我带来了麻烦。
在我当前的项目中,我有一个音频文件,我想嵌入JAR文件中。首先我尝试了one-jar
,但几个小时后我放弃了它。我把音频文件放到JAR文件中就好了,但我无法从我的程序中访问它。我知道我需要按照建议使用getResourceAsStream
here但我不清楚在获得输入流后我做了什么。我可以看到让它工作的唯一方法是使用InputStream
并创建一个全新的文件(见下图......它可以工作),但创建一个新文件似乎是浪费< / strong>(我不希望人们看到我的程序运行时出现音频文件)。 如果音频文件仍包含在.JAR
文件中,是否无法直接访问音频文件?
File file = new File("myAudio.wav");
InputStream stream = mypackage.MyApp.class.getResourceAsStream("audio/myAudio.wav");
try {
OutputStream out = new FileOutputStream(file);
byte buf[] = new byte[1024];
int len;
while ((len = inputStream.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.close();
inputStream.close();
} catch (IOException e) {
}
修改
我的JAR文件的内部结构包含1.)一个库包(Jama),2。)我的包是我的类文件的直接父包,一个名为“audio”的文件夹包含{{ 1}}和3.)myAudio.wav
文件夹,其中包含我的META-INF
。
修改
音频流的读取方式如下。我试图直接使用manifest.mf
,但我没有成功。我想再次指出,当我从包含InputStream
文件的音频文件的输入流创建一个新的音频文件时,我已经拥有它了,但就像我之前说的那样,创建一个大音频似乎是浪费文件已存在于JAR
时,每次运行程序时都会生成文件。这个文件娱乐是我想要避免的。
JAR
答案 0 :(得分:3)
AudioSystem.getAudioInputStream(stream);
不适合你?