【发布时间】:2010-09-08 23:49:48
【问题描述】:
Java 是否会施加任何额外的限制。 Windows(直到 Vista)不允许包含名称
\ / < > ? * :
我知道如何验证名称(正则表达式)。
我需要验证用户输入的文件名。
我的应用程序不需要在任何其他平台上运行,当然,我更愿意独立于平台!
【问题讨论】:
标签: java operating-system filesystems
Java 是否会施加任何额外的限制。 Windows(直到 Vista)不允许包含名称
\ / < > ? * :
我知道如何验证名称(正则表达式)。
我需要验证用户输入的文件名。
我的应用程序不需要在任何其他平台上运行,当然,我更愿意独立于平台!
【问题讨论】:
标签: java operating-system filesystems
不,您可以转义 Java 不允许在字符串文字中使用但文件系统允许的任何字符。
此外,如果尝试将 Windows 应用程序移植到 Mac 或 Unix,最好使用:
File.separator
确定要在每个平台上使用的正确文件分隔符。
【讨论】:
Java 支持任何可以用 Unicode 表示的String(受制于一些非常长的最大长度,Integer.MAX_VALUE),并且文件名只是另一种String。
当然,这意味着您可以尝试使用底层操作系统不支持的名称来引用文件。如果你这样做,当你尝试使用文件参考时,你会得到某种IOException...
【讨论】:
当您创建new File 时,输入的参数将由java.io.FileSystem 类的特定于平台的实现进行规范化。据我所知,没有 Java 特定的限制。
是的,始终使用File.separator。
【讨论】: