我正在根据动态值创建文件名,例如公司名称和forename / surname。
我想在尝试创建文件之前验证文件名是否有效。这是检查它不包含任何非法字符,如果他们这样做,则替换它们。
我当然可以使用正则表达式,但是想知道是否存在像commons-lang或commons-io这样的现有方法呢?
答案 0 :(得分:5)
对于Java 7,如果路径包含特定文件系统的非法字符,则新方法java.nio.file.Paths.get(String path)
将抛出InvalidPathException
,但在Java 6或更早版本中,遗憾的是没有此类函数。< / p>
由于文件名中允许的字符和长度与高度平台(甚至文件系统)相关,因此您可能没有比尝试创建文件并查看文件是否失败更好的选择。在Java 6中,使用非法路径创建FileOutputStream将引发相当不明确的FileNotFoundException。
答案 1 :(得分:3)
好吧,即使 是合法文件名,也应该删除它,因为它可能包含一个路径,在这种情况下用户可能会提供../../../../ ../../../../etc/passwd等。