Не удается удалить файл после создания 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;