對於文件和目錄名,有一些受限制的字符(甚至在Windows中是全文件名)。這other question已經涵蓋了他們。如何在Java中檢索文件名的禁用字符?
在Java中,有沒有一種方法可以檢索禁用字符列表,這取決於系統(有點像檢索斷路器字符)?或者我只能自己放列表,檢查系統?
編輯:從一般的問題,在我的特殊情況更多的背景,一邊。
我使用默認名稱,來自某些數據(對其內容沒有真正的控制權),並將此名稱作爲默認文件名(使用setSelectedFile()
)提供給JFileChooser。但是,這個截斷了最後一個無效字符之前的任何內容。
這些默認名稱有時會以「mm/dd/yy」格式結束日期,僅保留默認名稱中的「yy」,因爲「/」被禁止。因此,檢查異常並不是真正的選擇,因爲文件本身甚至還沒有創建。
編輯之二:嗯,這讓我想,如果JFileChooser截斷了這個名字,它可能有權訪問這些字符的列表,可以進一步檢查。
編輯ter:好吧,檢查來自JFileChooser的源代碼顯示了一些非常簡單的東西。對於文本字段,它使用file.getName()。它實際上並不檢查無效字符,它只是將「/」作爲路徑分隔符,並僅保留最終的「實際文件名」。其他禁止的字符實際上通過。
定義「特殊字符」。 – 2010-03-23 10:13:53
+1白名單 – 2010-03-23 10:34:54
+1在大多數UNIX-y文件系統中,唯一被禁止的字符是'/'和nul-字符'\ 0'。 – 2010-03-23 11:10:45