2013-06-20 22 views
0

假設指向文件夾的Path對象(例如, c:\pluto,如何在不考慮文件夾名稱的情況下在Java中生成新的空文件夾?使用Java中的OS表示法創建新文件夾

E.g.當我調用方法時,說X(),它應該創建一個新文件夾路徑c:\pluto\new folder。如果我再次按它必須創建c:\pluto\new folder (1),再次按我必須獲得c:\pluto\new folder (2)等。

爲什麼我需要與OS交互?由於標準新文件夾的名稱因操作系統和操作系統語言而異。

老實說,我沒有Java應用程序與操作系統交互的經驗。

回答

0

使用String.valueOf(System.nanoTime)生成文件夾名稱。它會爲每個呼叫生成唯一的文件夾名稱。然後用基本路徑和瞧這個文件夾名稱,你有一個唯一的文件夾名稱。

使用File.separator來分隔基本路徑和生成的文件夾名稱。

UPDATE:

如果文件夾名稱將顯示/經由用戶接口選擇,然後前列的方法可能不適合。然後使用掩碼和數字。對於面膜,讓它成爲new folder (%n%)。其中%n%將生成數字或日期字符串。

要檢查文件夾存在在你的代碼中使用下面的方法:

private static boolean doesFolderExist(String folderPath) { 
    final File folderHandler = new File(folderPath); 
    return folderHandler.isDirectory(); 
} 

但是從我的角度來看我會詢問用戶的名稱爲新文件夾,而不是自動生成它。只有當用戶不想爲新文件夾輸入名稱,只有在這種情況下,我會自動生成它。無論如何文件夾存在檢查將運行。

+0

這是一個基於邏輯的答案,但它不是答案......此外,讓我說'System.nanoTime'這不能保證生成唯一的文件夾名稱:必須驗證生成的文件夾名稱與任何現有路徑匹配,並最終生成另一個文件夾名稱:這是一種罕見的情況,比地球上的隕石頻率低,但可能! –

+0

我假設你在單線程環境中生成這些名稱。好的,然後考慮[UUID](http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html)類而不是'nanoTime'調用。在大多數情況下,如果不檢查系統中是否存在此文件夾,則可以接受此方法。如果否,請提供有關您的申請的更多詳情。爲什麼你需要'真實',而不是'僞真正'唯一的名字。 – 2013-06-20 13:05:28

+0

由於新的文件夾名稱必須顯示在JFileChooser中,我想讓它符合OS語言和樣式! –

相關問題