在Java中创建有效的文件名

ple*_*dge 5 java regex

我正在根据动态值创建文件名,例如公司名称和forename/surname.

然后,我想在尝试创建文件之前验证文件名是否有效.这是检查它不包含任何非法字符,如果他们这样做,则替换它们.

我当然可以使用正则表达式,但是想知道是否有像commons-lang或commons-io这样的现有方法呢?

jar*_*bjo 5

对于Java 7,如果路径包含特定文件系统的非法字符,则新方法java.nio.file.Paths.get(String path)将抛出一个InvalidPathException,但在Java 6或更早版本中,遗憾的是没有这样的函数.

由于文件名中允许的字符和长度依赖于高度平台(甚至文件系统),因此您可能没有比尝试创建文件并查看文件是否失败更好的选择.在Java 6中,使用非法路径创建FileOutputStream将抛出相当不明确的FileNotFoundException.