gpt4 book ai didi

java - 如何在 Java 中检索文件名的禁止字符?

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:53 24 4
gpt4 key购买 nike

对于文件名和目录名,有一些限制字符(在 Windows 中甚至是完整文件名)。这other question已经涵盖了它们。

在 Java 中有没有一种方法可以检索这个禁止字符列表,这取决于系统(有点像检索换行符字符)?还是只能自己放单子(monad),检查系统?


编辑:除了一般问题之外,还有更多关于我的特殊情况的背景。

我使用来自某些数据的默认名称(无法真正控制其内容),并将此名称提供给 JFileChooser,作为要使用的默认文件名(使用 setSelectedFile() ).但是,这个会截断最后一个无效字符之前的任何内容。

这些默认名称有时以“mm/dd/yy”格式的日期结尾,默认名称中只留下“yy”,因为“/”是被禁止的。因此,检查异常并不是真正的选择,因为文件本身甚至还没有创建。

编辑之二:嗯,这让我想到,如果 JFileChooser 正在截断名称,它可能可以访问此类字符的列表,进一步检查可能会很有趣。

编辑器: 好的,检查来自 JFileChooser 的源显示了一些非常简单的事情。对于文本字段,它使用 file.getName()。它实际上并不检查无效字符,只是将“/”作为路径分隔符,并且只保留结尾,即“实际文件名”。其他禁用字符实际通过。

最佳答案

当谈到处理“禁止”字符时,我宁愿过于谨慎并禁止/替换所有可能在任何文件系统上引起问题的“特殊”字符。

即使技术上允许,有时这些字符也会导致怪异。

例如,我们遇到了 PDF 文件被(成功)写入 SAN 的问题,但是当通过网络服务器从该位置提供服务时,当我们将 PDF 嵌入到 SAN 中时,某些字符会导致问题在 Firefox 中呈现的 HTML 页面。如果直接访问PDF就可以了,在其他浏览器中也可以。 Firefox 和 Adob​​e Reader 的交互方式出现一些奇怪的错误。

总结:文件名中的“特殊”字符 -> 等待发生的奇怪错误

最终,唯一可以确定的方法是使用白名单。

关于java - 如何在 Java 中检索文件名的禁止字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2498733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com