我正在創建基於動態值的文件名,例如公司名和姓/名。用Java創建有效的文件名
我想在嘗試創建文件之前驗證文件名是否有效。那是檢查它不包含任何非法字符,並且如果他們做,替換他們。
我當然可以使用正則表達式,但想知道是否有像commons-lang或commons-io這樣的現有方法嗎?
我正在創建基於動態值的文件名,例如公司名和姓/名。用Java創建有效的文件名
我想在嘗試創建文件之前驗證文件名是否有效。那是檢查它不包含任何非法字符,並且如果他們做,替換他們。
我當然可以使用正則表達式,但想知道是否有像commons-lang或commons-io這樣的現有方法嗎?
對於Java 7,如果路徑包含特定文件系統的非法字符,但在Java 6或更早的版本中,新方法java.nio.file.Paths.get(String path)
將拋出InvalidPathException
,不幸的是沒有這種功能
由於允許的字符數和文件名的長度是高度依賴的平臺(甚至文件系統),因此您可能沒有比嘗試創建文件並查看是否失敗更好的選項。在Java 6中,使用非法路徑創建FileOutputStream將引發一個非特定的FileNotFoundException。
那麼,你應該剝奪,即使它是一個合法的文件名,因爲它可能包含路徑,在這種情況下,用戶可能會提供../../../../../。 ./../../etc/passwd等。