2013-03-15 16 views
0

我在这里看到类似的问题关于File.delete()不能按预期工作,但是这与Java实际创建文件的方式略有不同,但不会删除它它完成后。Java不删除自己创建的文件

File genFile = new File(parsed); 
... sends file data across socket ... 
genFile.delete(); 

生成的文件(genFile)先前在程序生成并写入,但是当我尝试将其删除,文件只是留在目录中 - 没有错误信息等任何想法,有什么事情正在发生?

+6

您是否在写入文件后正确关闭了输出流?或从它读取后的任何输入流? – radai 2013-03-15 04:55:46

+0

设置genFile = null;除非对象被垃圾收集,否则文件通常不会被删除。 – 2013-03-15 04:56:46

+0

请分享从java创建文件的代码。 – 2013-03-15 04:57:48

回答

0

你需要关闭()试图删除()之前的文件连接

+0

这工作 - 谢谢:)。必须关闭InputStreamReader。 – 2013-03-15 05:11:03

1

File.delete()不好,因为它没有提到错误。

尝试

java.nio.file.Files.delete(file.toPath()); // throws IOException 

它可能会告诉你为什么文件无法删除的原因。 (或者根本不:)

0

添加

genFile.close(); 

genFile.delete(); 

流不会在您尝试删除文件时已被刷新,因此先关闭该流并删除该文件。

0

如果你在Windows或* Unix下运行,那么这些信息将是相关的。

Windows不会删除任何应用程序打开的文件;在删除之前关闭文件。

Unix变种应该继续并删除文件(释放inode)。