我正在研究一个涉及创建临时音频文件,从中读取数据然后删除其的程序的程序。除了删除文件外,我的所有工作都有效。当我尝试删除文件时,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
之后,结果相似。
为什么输入流关闭后保持打开状态?
如果您用BufferedInputStream包裹
,则应该有效audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(Files.newInputStream(file.toPath())));
文件是Nio
的类 import java.nio.file.Files;