2013-07-16 77 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

相關問題