我想检查一个字符串是否是文件夹或文件的有效路径名。有效路径名可以是 C:\Games\WarCraft,无效路径是 c:[][]Games\\WarCraft。我如何检查这是否正确?
我对检查该文件或文件夹是否存在不感兴趣。我不想使用任何像 Apache Commons 这样的外部库来做到这一点,只是普通的旧 java。
另外,我想让我的代码系统独立 -虽然没有必要更新
请提供线索!:)
我想检查一个字符串是否是文件夹或文件的有效路径名。有效路径名可以是 C:\Games\WarCraft,无效路径是 c:[][]Games\\WarCraft。我如何检查这是否正确?
我对检查该文件或文件夹是否存在不感兴趣。我不想使用任何像 Apache Commons 这样的外部库来做到这一点,只是普通的旧 java。
另外,我想让我的代码系统独立 -虽然没有必要更新
请提供线索!:)
您不能以独立于系统的方式执行此操作,而且我认为没有任何用于路径名验证的标准 API。
我能想到的最好的建议是使用正则表达式来匹配路径名。确切的细节将取决于您希望限制路径名的松散或紧密程度。例如,在 Linux 上,您可能希望在路径名中禁止空格,因为虽然它们是有效的,但它们也会导致编写不佳的 shell 脚本出现问题。或者您可能想要坚持使用绝对(或相对)路径名。
但在进行正则表达式匹配之前,最好使用File.getCanonicalFile()
. 这将执行诸如检查符号链接,摆脱多余的“。”之类的事情。和“..”,并将驱动器号转换为标准格式......这应该简化你的正则表达式。