【问题标题】:Does Java impose any further restrictions on filenames other than the underlying operating system?Java 是否对底层操作系统以外的文件名施加任何进一步的限制?
【发布时间】:2010-09-08 23:49:48
【问题描述】:

Java 是否会施加任何额外的限制。 Windows(直到 Vista)不允许包含名称

\ / < > ? * :

我知道如何验证名称(正则表达式)。

我需要验证用户输入的文件名。

我的应用程序不需要在任何其他平台上运行,当然,我更愿意独立于平台!

【问题讨论】:

    标签: java operating-system filesystems


    【解决方案1】:

    不,您可以转义 Java 不允许在字符串文字中使用但文件系统允许的任何字符。

    此外,如果尝试将 Windows 应用程序移植到 Mac 或 Unix,最好使用:

    File.separator
    

    确定要在每个平台上使用的正确文件分隔符。

    【讨论】:

      【解决方案2】:

      Java 支持任何可以用 Unicode 表示的String(受制于一些非常长的最大长度,Integer.MAX_VALUE),并且文件名只是另一种String

      当然,这意味着您可以尝试使用底层操作系统不支持的名称来引用文件。如果你这样做,当你尝试使用文件参考时,你会得到某种IOException...

      【讨论】:

      • 字符串长度最大值是 Integer.MAX_VALUE 的长度,因为长度存储在 int 中。
      【解决方案3】:

      当您创建new File 时,输入的参数将由java.io.FileSystem 类的特定于平台的实现进行规范化。据我所知,没有 Java 特定的限制。

      是的,始终使用File.separator

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 2012-08-16
        • 1970-01-01
        • 2018-08-04
        相关资源
        最近更新 更多