在Windows上验证文件名
发布于 2021-01-31 15:24:26
public static boolean isValidName(String text)
{
Pattern pattern = Pattern.compile("^[^/./\\:*?\"<>|]+$");
Matcher matcher = pattern.matcher(text);
boolean isMatch = matcher.matches();
return isMatch;
}
此方法可以保证Windows上的有效文件名吗?
关注者
0
被浏览
75
1 个回答
-
鉴于先前引用的MSDN文档中指定的要求,以下正则表达式应该做得很好:
public static boolean isValidName(String text) { Pattern pattern = Pattern.compile( "# Match a valid Windows filename (unspecified file system). \n" + "^ # Anchor to start of string. \n" + "(?! # Assert filename is not: CON, PRN, \n" + " (?: # AUX, NUL, COM1, COM2, COM3, COM4, \n" + " CON|PRN|AUX|NUL| # COM5, COM6, COM7, COM8, COM9, \n" + " COM[1-9]|LPT[1-9] # LPT1, LPT2, LPT3, LPT4, LPT5, \n" + " ) # LPT6, LPT7, LPT8, and LPT9... \n" + " (?:\\.[^.]*)? # followed by optional extension \n" + " $ # and end of string \n" + ") # End negative lookahead assertion. \n" + "[^<>:\"/\\\\|?*\\x00-\\x1F]* # Zero or more valid filename chars.\n" + "[^<>:\"/\\\\|?*\\x00-\\x1F\\ .] # Last char is not a space or dot. \n" + "$ # Anchor to end of string. ", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS); Matcher matcher = pattern.matcher(text); boolean isMatch = matcher.matches(); return isMatch; }
请注意,此正则表达式对文件名的长度没有施加任何限制,但是实际的文件名可能会限制为260或32767个字符,具体取决于平台。
推荐阅读
-
如何克服-Windows上的pip安装Ansible失败,Windows上的文件名或扩展名太长
2021-01-29 关注 0 浏览98 1答案
-
下列文件名中,( )是合法的Windows文件名。
2022-05-10 关注 0 浏览22 1答案
-
在Windows 7中,文件名命名不能______。
2022-05-14 关注 0 浏览22 1答案
-
( )在Windows中,支持长文件名,但文件名中不允许有空格。
2022-05-14 关注 0 浏览28 1答案
-
在URL和Windows文件名(Java)之间转换?
2021-01-30 关注 0 浏览73 1答案
-
在Windows 7中,下列正确的文件名是_______。
2022-05-14 关注 0 浏览20 1答案
-
在Windows中,下列文件名不合法的是________。
2022-05-10 关注 0 浏览16 1答案
-
在Windows 7中,下列文件名中错误的是______。
2022-05-14 关注 0 浏览29 1答案
-
在Windows中,下列正确的文件名是( )。
2022-05-13 关注 0 浏览22 1答案
-
下列文件名在Windows中不合法的是________。
2022-05-10 关注 0 浏览15 1答案