2009-11-17 58 views
6

我試圖用java.io編寫一個文件,我試圖在"some/path/to/somewhere/then-my-file"的位置創建它。在創建文件時,路徑中的任何目錄可能存在也可能不存在。因爲沒有這樣的目錄,所以我不希望拋出IOException,而是需要時透明地創建目錄。用Java創建文件的方法,如果需要創建目錄?

有沒有一種方法可以創建寫入文件的方式所需的任何目錄?我正在尋找可以添加到類路徑的輕量級庫中的Java SDK 中的某些內容,例如, Apache Commons IO。

P.S.爲了清楚起見,我已經編寫了一個解決方案,該解決方案適用於我測試它的相當狹窄的方式,所以我不需要關於如何編寫我正在尋找的方法的建議。我正在尋找一種經過相當充分測試和跨平臺的方法。

回答

24

new File("some/path/to/somewhere/then-my-file").getParentFile().mkdirs()

+2

+1。你太快了 – ChssPly76 2009-11-17 23:09:31

+1

對不起...現在我的鍵盤着火了......不能......鍵入...... – skaffman 2009-11-17 23:10:34

+0

太棒了,謝謝。 – Grundlefleck 2009-11-17 23:21:13

2

由於問題也提到了圖書館Apache的通用IO,我在報告如下使用這個漂亮的圖書館解決方案:

File file = new File("... the directory path ..."); 
FileUtils.forceMkdir(file); 

該解決方案使用類FileUtils,從包org.apache.commons.io和方法forceMkdir,即「製作一個目錄,包括任何必要但不存在的父目錄」。

+1

TS想要創建一個_regular_文件。然後它會像'FileUtils.forceMkdir(regularFile.getParentFile())'或'FileUtils.forceMkdirParent(regularFile)'從版本2.5開始 – 2015-04-16 08:46:35

+0

好抓!隨意編輯答案以改進它。評論通常不會被閱讀 – JeanValjean 2015-04-18 09:31:58