除了底层操作系统外,Java是否对文件名强加了其他限制?

时间:2020-03-05 18:53:41  来源:igfitidea点击:

Java是否施加了自己的任何额外限制。 Windows(最高为Vista)不允许名称包含

\ / < > ? * :

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

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

我的应用程序不需要在任何其他平台上运行,但是,当然,我希望是独立于平台的!

解决方案

回答

不,我们可以转义Java不允许在String文字中但文件系统允许的任何字符。

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

File.separator

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

回答

创建新文件时,输入的参数将由java.io.FileSystem类的特定于平台的实现标准化。我没有Java特定的限制。

是的,请始终使用File.separator。

回答

Java支持可以用Unicode表示的任何字符串(最大可笑的最大长度为Integer.MAX_VALUE),文件名只是另一种字符串。

当然,这意味着我们可以尝试使用基础操作系统不支持的名称来引用文件。如果执行此操作,则在尝试使用File引用时会得到某种IOException。