java - 使用Tomcat和servlet时如何删除txt文件?

标签 java file tomcat servlets

我正在使用 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/

相关文章:

java - 使用实例变量访问静态变量

java - JAXB XSLT 属性替换

python - 替换巨大的 txt 制表符分隔文件中第一行中的文本

java中上传和存储图像的Java解决方案

java - 如何使用 Struts 2 在 Apache Tomcat 应用程序中建立数据库连接

angular - 深度路由适用于 tomcat 上的 Angular 5 应用程序,但直接路由不起作用

java - 插件 org.apache.maven.plugins :maven-compiler-plugin or one of its dependencies could not be resolved

java - WinRun4J - 无法加载库 jar

javascript - 在 JavaScript 中访问本地文件修改时间

java - Tomcat连接池&空闲连接