gpt4 book ai didi

Java - 如何确定文件名是否有效?

转载 作者:IT老高 更新时间:2023-10-28 20:32:06 32 4
gpt4 key购买 nike

在我的 Java 应用程序中,我将文件重命名为字符串参数中提供的文件名。有一种方法

boolean OKtoRename(String oldName, String newName)

它基本上检查 newName 是否尚未被其他文件占用,因为我不想掩埋现有的。

我现在想到 newName 字符串可能不会表示有效的文件名。所以我想把这个检查添加到方法中:

if (new File(newName).isFile()) { 
return false;
}

这显然不是正确的做法,因为在大多数情况下 newFile 还不存在,因此虽然它 OKtoRename,但该函数返回 false。

我想知道,有没有像 canExist() 这样的方法(我知道没有用于 java.io.File 对象的方法)?或者我是否必须求助于正则表达式来确保 newFile 字符串不包含无效字符(例如?、*、"、:)?我想知道 JDK 中是否隐藏了一个函数可以告诉我字符串可能表示一个有效的文件名。

最佳答案

几个月前,我根据一些在线研究收集了一份非法文件名字符列表(考虑 UNIX、Mac OS X 和 Windows 系统)。如果新文件名包含其中任何一个,则可能存在并非在所有平台上都有效的风险。

private static final char[] ILLEGAL_CHARACTERS = { '/', '\n', '\r', '\t', '\0', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':' };

编辑:我想强调的是,这不是一个完整的解决方案:正如评论者指出的那样,即使它通过了此测试,您的文件名仍可能是 Windows 特定的关键字,如 COM、PRN 等。但是,如果您的文件名中包含这些字符中的任何一个,那么在跨平台环境中肯定会造成麻烦。

关于Java - 如何确定文件名是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/893977/

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