需要输入完整路径来保存文件吗?

时间:2018-09-01 14:20:33

标签: java file audio save

好的,这是我在这里的第一篇文章,对不起,如果我做错了什么。 (请让我知道我是否也这样做)

因此,当可运行的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);

它不会保存文件,为什么呢?我该怎么做才能保存文件?

最后的笔记:

  1. 我刚接触Java。
  2. 我对编程本身还是很陌生。
  3. 我不想使用图书馆,我想尝试使它在没有图书馆的情况下工作,而且我是如此亲近。
  4. 如果我忘了说什么,请告诉我,我将编辑这篇文章或发表评论。

编辑:只是想弄清楚这在IDE中有效,但是在我导出它时无效。另外,我在“ src”文件夹中和“ src”文件夹旁边都有数据文件夹,仅供测试。

0 个答案:

没有答案