2013-08-21 149 views
-4

那麼我的問題是,如果說我正在做一個文件,像這樣如果目錄不存在,是否會創建一個文件?

File f = new File("THE_Folder/me.txt"); 

但「THE_Folder」犯規存在,該文件夾將仍然在最後,當我保存文件中創建的文件?它會創建「THE_Folder」和「me.txt」嗎?

+4

當你嘗試時發生了什麼?順便說一句,不是我的倒票。 –

+1

-1:這個問題沒有顯示任何研究工作。請參閱[文檔](http://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.lang.String))。 – bdares

+1

你曾嘗試過嗎? –

回答

3

不,它不會。但有一個方便的createNewFile()mkdirs()方法。

更具體地說,使用mkdirs()來創建目錄,但是您首先需要調用getParentFile(),因爲您不想創建名爲me.txt的目錄。

然後你可以調用createNewFile()方法來最終創建你的新文件。

正如EJP所解釋的,沒有必要致電createNewFile(),因爲FileOutputStreamFileWriter會爲您創建新文件。

+0

不,沒有。 'File.createNewFile()'的行爲方式相同。它不會創建缺少的中間目錄。 – EJP

+0

你試過這個不存在的目錄嗎? –

+0

哎呀,我剛剛做了,我糾正了我的答案。 – sgbj

2

File不會創建文件/文件夾,它只是打開一個文件,除非您調用方法createNewFile(),它將創建一個具有指定名稱的文件(不是文件夾)。所以,不,它不會

+0

否'除非'有關它。 'File.createNewFile()'不會創建目錄。 – EJP

+0

我的不好。我沒有在問題中讀到'文件夾'一詞。答案已更正:-) –

+0

你還是錯的。它不'打開文件'。它只是在內存中創建一個'File'對象。它不會對文件系統做任何事情。 – EJP

2

創建一個File對象本身並不會創建文件或目錄。您可以撥打

File f2 = f.getParentFile(); 
if (f2 != null) f2.mkdirs(); 

如果它們不存在,則創建必要的目錄。 (您不需要null檢查,如果你確定f指定父目錄,現有的或以其他方式)。在此之後,你可以調用

f.createNewFile(); 

創建該文件本身。請注意,如果您在創建目錄之前嘗試創建該文件,您將得到一個IOException

+0

'f.getParentFile()。mkdirs()'實際上。 – EJP

+0

@EJP - 很好的結果 –

相關問題