尽管在最终条款中关闭了流,但我似乎经常在使用Java时清理问题.File.delete()无法删除文件,Windows资源管理器也失败.运行System.gc()有时会有所帮助,但没有什么能够终止VM有助于始终如一,而且这不是一种选择.
有没有人有我可以尝试的其他想法?我在Windows XP上使用Java 1.6.
更新:删除了FLAC代码示例,如果我将代码隔离,则代码可以正常工作.
更新:更多信息,这发生在Apache Tomcat,Commons FileUpload用于上传文件,可能是罪魁祸首,我也使用Runtime.exec()在一个单独的进程中执行LAME来编码文件,但这似乎不太可能因为ProcessExplorer清楚地表明java.exe在文件上有一个RW锁定,LAME终止正常.
更新:我正在假设缺少close()或close()在我的代码或外部库中没有被调用.我只是找不到它!
您发布的代码看起来很好 - 它不应该导致您描述的问题.我知道你只发布了一段代码 - 你能尝试将这部分提取到一个单独的程序,运行它,看看问题是否仍然存在?我的猜测是代码中有一些其他地方new FileInputStream(path);
可以正常关闭流.当您尝试删除文件时,可能只是在这里看到结果.