对于文件和目录名,有一些受限制的字符(甚至在Windows中是全文件名)。这other question已经涵盖了他们。如何在Java中检索文件名的禁用字符?
在Java中,有没有一种方法可以检索禁用字符列表,这取决于系统(有点像检索断路器字符)?或者我只能自己放列表,检查系统?
编辑:从一般的问题,在我的特殊情况更多的背景,一边。
我使用默认名称,来自某些数据(对其内容没有真正的控制权),并将此名称作为默认文件名(使用setSelectedFile()
)提供给JFileChooser。但是,这个截断了最后一个无效字符之前的任何内容。
这些默认名称有时会以“mm/dd/yy”格式结束日期,仅保留默认名称中的“yy”,因为“/”被禁止。因此,检查异常并不是真正的选择,因为文件本身甚至还没有创建。
编辑之二:嗯,这让我想,如果JFileChooser截断了这个名字,它可能有权访问这些字符的列表,可以进一步检查。
编辑ter:好吧,检查来自JFileChooser的源代码显示了一些非常简单的东西。对于文本字段,它使用file.getName()。它实际上并不检查无效字符,它只是将“/”作为路径分隔符,并仅保留最终的“实际文件名”。其他禁止的字符实际上通过。
定义“特殊字符”。 – 2010-03-23 10:13:53
+1白名单 – 2010-03-23 10:34:54
+1在大多数UNIX-y文件系统中,唯一被禁止的字符是'/'和nul-字符'\ 0'。 – 2010-03-23 11:10:45