Нужно ввести полный путь для сохранения файла? - PullRequest
0 голосов
/ 01 сентября 2018

Хорошо, это мой первый пост, извините, если я сделал что-то не так. (пожалуйста, дайте мне знать, если я так и сделал)

Итак, я пытался создать папку «data» с аудиофайлом (.wav) в нем, когда запускается исполняемый файл JAR, но по какой-то причине он не работает, я пытался получить это работал на прошлой неделе, но я наконец-то отказался от попыток заставить его работать без помощи (кроме поиска по Интернету) и поэтому спрашиваю здесь.

Итак, у меня есть этот код:

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', просто для тестирования.

...