我正在使用 Tomcat 和 servlet 的应用程序中工作。
有一个 servlet (audioProcess),它接收要播放的 mp3 文件的名称。该 servlet 还处理 mp3 文件并将结果存储在 txt 文件中。当再次调用audioProcess servlet(使用不同的mp3 文件)时,该txt 的内容将被替换。
每次调用此 servlet 时,我都会删除 txt 并创建一个新的 txt(包含有关 mp3 文件的信息)。 txt 文件的名称始终相同。
我的问题是txt文件永远不会被删除。我删除文件的方法是:
File a = new File(path_clasificacion);
if(a.exists())
{
boolean erased = a.delete();
out.println("erased?" + erased);
}
我第一次调用 servlet 时,txt 文件被删除。只是第一次。删除txt文件后,我尝试将新信息写入同名的txt文件中(存储在同一路径中)。发生的情况是旧文件没有被删除,新信息被添加到文件中。
为什么我无法删除该文件?
谢谢
使用以下代码生成txt文件:
FileWriter f = null;
PrintWriter pw = null;
try
{
f = new FileWriter(path,true);
pw = new PrintWriter(f);
pw.println(info);
} catch (Exception e) {e.printStackTrace();
finally
{
f.close();
}
最佳答案
只要文件有打开的文件句柄,您就无法删除该文件。
检查您的代码并确保close()
所有流或读取器。这显然包括确保 MP3 摘要库代码对它的任何引用也被关闭。
“第一次呢?”你会问。答:您从 erase()
调用中获得了肯定状态,因为删除请求已成功传递到操作系统。然而,操作系统仍在等待您最终放开该文件。因此,即使是第一次,该文件也没有真正(物理)删除。
关于java - 使用Tomcat和servlet时如何删除txt文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039160/