2013-07-16 82 views
1

我知道创建和删除目录的基本语法。我处于一种奇怪的状况,所以任何帮助都会很有帮助。创建目录并最终删除它

我创建目录,如下图所示:

if (!dir.exists()) { 
    dir.mkdir(); 
} 
else 
    System.out.println("hfuiwedsjcz"); 

我创建了一个目录,目录内我有一个以上的文件。我写入这些文件并对目录中的文件执行几个操作。
我想编写一个程序来创建目录,比如我写入并读取其中的文件后删除该目录(以避免手动删除该文件夹)。

我假设这是一个递归的过程,我首先创建文件夹,然后删除它。现在当我下次运行时,我不应该有任何文件夹,而应该重新创建并删除它。

我该怎么做?

+0

您可以使用Apachesc commons http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#deleteDirectory%28java.io.File%29删除目录。它会删除里面的所有文件夹/文件。 – Makky

回答

6

一个选项是使用File类中的deleteOnExit()方法。在创建它们时在每个目录和文件上调用它。

当JVM以与注册文件相反的顺序存在时,它将删除文件。

if (!dir.exists()) { 
    dir.mkdir(); 
    dir.deleteOnExit(); 
} 

// etc... 
+0

这可以在任意数目的目录上完成吗?我在一个循环中创建了十多个目录,并且想要在读取文件和编辑其中的文件后进行删除。当我用dir.deleteOnExit()运行代码时;在执行相关操作之前文件被删除,导致FileNotFoundException。请帮忙。谢谢。 –

+0

@MohammedIrfan在JVM退出之前,文件不会被删除。您的代码中必须有不同的错误。 –

+0

你可以对“JVM退出”是什么意思有点精确。这是我想要的解决方案,它是删除文件,但不是全部。所以,如果你能解释“JVM退出”是什么意思,它可以帮助我很多。再次感谢。 –

1

如何想当然地认为,该目录将创建一次,并在每次运行时,在结束时,你只想清理目录(空目录)? 这可以帮助你:

FileUtils.cleanDirectory

或者你愿意,你可以去:

FileUtils.forceMkdir()

,并在年底或者:

FileUtils.deleteDirectory()

FileUtils.forceDeleteOnExit()

这是类似于其他人的回应,但是这将是,如果你使用的是JDK 1.6要更简单的方法,而不是1.7(不幸的是,有很多人仍然使用1.6)

0

使用java.io.File.deleteOnExit()在每个创建的File对象上。您需要从第一个目录开始,创建并为每个使用的File对象调用它。

+1

@Duncan Jones已经有答案了。 – Makky

相关问题