Не удается удалить файл после создания AudioInputStream из файла

Я работаю над программой для класса, которая включает в себя создание временного аудиофайла, чтение данных из него, а затем удаление его. У меня все работает, кроме удаления файла. Когда я пытаюсь удалить файл, file.delete() возвращается false, Я попытался выяснить, что именно было неправильно, используя java.nio Файлы, и это вернуло, что другой процесс открыл файл. Посмотрев на мой код, я сузил его до AudioInputStream держа файл открытым. Я могу удалить файл в порядке прямо перед созданием AudioInputStreamОднако файл не может быть удален после его создания, несмотря на то, что я закрываю поток перед попыткой удалить файл.

if (file != null && file.isFile())
{
    try
    {
       audioInputStream = null;
       try
       {
          audioInputStream = AudioSystem.getAudioInputStream(file);
       }  
       catch (Exception e)
       {
           System.out.println(e);
       }
       finally
       {
          audioInputStream.close();
       }    
       System.out.println("Attempted to delete wav file. Succesfull = " + file.delete());
    }
}

Я также пытался разместить audioInputStream.close() после улова, а не в finally с похожими результатами.

Почему входной поток сохраняет файл открытым после его закрытия?

1 ответ

Решение

Должно работать, если вы завернуты в BufferedInputStream

audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(Files.newInputStream(file.toPath())));

Файлы это класс от nio

import java.nio.file.Files;

Другие вопросы по тегам