2017-05-07 54 views
0

我遇到的問題是,當我嘗試創建文件夾時,它不會創建。這可能與目錄有關,但老實說我不知道​​。我試着用這個:如何在java中創建一個空文件夾?

File f = new File(javax.swing.filechooser.FileSystemView.getFileSystemView().getHomeDirectory() + "/Levels/First Folder/Levels"); 
    try{ 
     if(f.mkdir()) { 
      System.out.println("Directory Created"); 
     } else { 
      System.out.println("Directory is not created"); 
     } 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 

但它沒有爲我工作。

這是我把該文件的目錄,但我想要的程序在任何計算機上運行:C:\用戶\(我的名字)\桌面\級別\第一個文件夾\級別

+4

當你說「它沒有工作」,這是否意味着它打印了一個異常,是否意味着你的代碼不能編譯,是否意味着它打印了失敗消息,或者這意味着它打印了成功消息但它沒有創建? –

+0

它正在打印,沒有創建目錄,消息 –

+0

您是否檢查文件夾是否已經存在? – granmirupa

回答

1

你說僅桌面目錄存在,所以你需要使用mkdirs構建整個目錄樹:

File f = new File(javax.swing.filechooser.FileSystemView.getFileSystemView().getHomeDirectory() + "/Levels/First Folder/Levels"); 
try{ 
    if(f.mkdirs()) { //< plural 
     System.out.println("Directory Created"); 

請記住:你可能要檢查您嘗試創建它之前是否存在這個目錄,因爲它大概不是一個錯誤,如果你的程序之前創建了一次,那麼這個錯誤是可以繼續的。

+0

@AndyTurner謝謝。我不知道爲什麼我會這樣打字。睡覺時間... – Michael

1

推薦Files.createDirectories()而不是File.mkdirs(),因爲處理錯誤更直接。

這樣: Files.createDirectories(Paths.get(System.getProperty("user.home"), "/Levels/First Folder/Levels"));

隨着mkdirs()就很難確定它是否失敗了,爲什麼會失敗,或者如果它沒有創建目錄,因爲它已經存在。

+0

我不同意「很難確定它是否失敗」。當然可以很難確定*爲什麼會失敗。 – Michael

+1

您可以在嘗試創建之前檢查預先存在情況,但可能會出現競爭情況。所以有條件很難確定*如果*失敗。但好的,我會編輯:) –

相關問題