2009-10-02 74 views
5

我正在創建基於動態值的文件名,例如公司名和姓/名。用Java創建有效的文件名

我想在嘗試創建文件之前驗證文件名是否有效。那是檢查它不包含任何非法字符,並且如果他們做,替換他們。

我當然可以使用正則表達式,但想知道是否有像commons-lang或commons-io這樣的現有方法嗎?

回答

5

對於Java 7,如果路徑包含特定文件系統的非法字符,但在Java 6或更早的版本中,新方法java.nio.file.Paths.get(String path)將拋出InvalidPathException,不幸的是沒有這種功能

由於允許的字符數和文件名的長度是高度依賴的平臺(甚至文件系統),因此您可能沒有比嘗試創建文件並查看是否失敗更好的選項。在Java 6中,使用非法路徑創建FileOutputStream將引發一個非特定的FileNotFoundException。

3

那麼,你應該剝奪,即使它一個合法的文件名,因爲它可能包含路徑,在這種情況下,用戶可能會提供../../../../../。 ./../../etc/passwd等。