好的,这是我在这里的第一篇文章,对不起,如果我做错了什么。 (请让我知道我是否也这样做)
因此,当可运行的jar文件运行时,我一直试图在其中创建一个带有音频(.wav)文件的“数据”文件夹,但由于某种原因它无法正常工作,我试图这样做工作了最后一周,但我最终还是放弃了尝试使其在没有帮助的情况下工作(除了在互联网上搜索之外),因此在这里询问。
所以我有这个代码:
public static void loop(String path, int volume) {
try {
if (volume > 6) throw new IllegalArgumentException("Requested volume ("+volume+") is higher than allowed. (maximum 6)");
else if (volume < -80) throw new IllegalArgumentException("Requested volume ("+volume+") is lower than allowed. (minimum -80)");
else {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new File(path)));
clip.loop(Clip.LOOP_CONTINUOUSLY);
FloatControl gain = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gain.setValue(volume);
clip.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
用于连续循环播放.wav文件并且它可以工作,然后我尝试使用以下代码保存该文件:
public void save(String music, String output) {
try {
File sound = new File(music);
AudioInputStream ais = AudioSystem.getAudioInputStream(sound);
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File(output));
} catch (IOException | UnsupportedAudioFileException e) {
e.printStackTrace();
}
}
当我做这样的事情时,这似乎也起作用:
save("D:\\Eclipse\\eclipse\\workspace\\Test\\data\\music.wav", "C:\\Users\\Karim\\Desktop\\data\\test.wav");
loop("C:\\Users\\Karim\\Desktop\\data\\test.wav", -30);
但是,如果我尝试这样做:
private File jar() {
try {
File jar = new File(Game.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
return jar;
} catch (URISyntaxException e) {
e.printStackTrace();
}
return null;
}
private File data = new File(jar().getParentFile().getPath()+File.separator+"\\data");
private File music = new File(data.getPath()+"\\music.wav");
save(music.getPath(), "C:\\Users\\Karim\\Desktop\\data\\test.wav");
loop("C:\\Users\\Karim\\Desktop\\data\\test.wav", -30);
它不会保存文件,为什么呢?我该怎么做才能保存文件?
最后的笔记:
编辑:只是想弄清楚这在IDE中有效,但是在我导出它时无效。另外,我在“ src”文件夹中和“ src”文件夹旁边都有数据文件夹,仅供测试。