当前位置: 首页 > 面试题库 >

在Windows上验证文件名

壤驷泓
2023-03-14
问题内容
public static boolean isValidName(String text)
{
    Pattern pattern = Pattern.compile("^[^/./\\:*?\"<>|]+$");
    Matcher matcher = pattern.matcher(text);
    boolean isMatch = matcher.matches();
    return isMatch;
}

此方法可以保证Windows上的有效文件名吗?


问题答案:

鉴于先前引用的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个字符,具体取决于平台。



 类似资料:
  • 问题内容: 我正在将图像上传到servlet。通过检查文件头中的幻数,仅在服务器端验证上传的文件是否为图像。在将表单提交给Servlet之前,有什么方法可以在客户端验证扩展?我一按回车就开始上传。 我在客户端使用Javascript和jQuery。 更新: 我最终通过服务器端验证结束了工作,该验证读取字节,如果不是图像,则拒绝上传。 问题答案: 可以仅检查文件扩展名,但是用户可以轻松地将virus

  • 问题内容: 我有一个可以让人们上传文件的应用程序,表示为。但是,我要确保用户仅上传xml文件。我知道我可以使用进行此操作,但是我不知道将检查放在何处-据我所知,clean由于文件在clean运行时尚未上传,因此无法将其放在函数中。 这是模型: 问题答案: 对于后代:解决方案是使用read方法并将其传递给。

  • 问题内容: 在使用JavaScript上传 文件 之前,有什么方法可以检查 文件大小 吗? 问题答案: 是的 ,有些现代浏览器支持W3C的一项新功能[FileAPI。可以将其用于此目的,并且很容易测试它是否受支持,如果不支持,则可以回退到其他机制(如果需要)。 这是一个完整的示例: 而这里是它的行为。尝试使用最新版本的Chrome或Firefox。 稍微偏离主题,但是:请注意,客户端验证不能替代服

  • 问题内容: 我需要2个文本字段和1个文件上传。当我只需要文本字段时,一切都正常,但是当我需要文件上传时,即使我选择了一个文件,验证错误仍然会提示需要文件。有人知道我在做什么错吗?提前谢谢了。 //视图 //控制器 问题答案: 我找到了一种完全符合我想要的解决方案。 我变了 至

  • 问题内容: 我正在研究可分析android应用程序的Java SE应用程序。 是否有任何可用于验证AndroidManifest.xml的架构/ DTD?如果找到名称空间定义,例如: 但是schemas.android.com不能解析为实际主机,因此那里没有架构文件:-( 注:我 不 希望做验证在Android作为一个平台。 问题答案: Android XML没有DTD /方案 ,您必须依靠其他可

  • 问题内容: 我正在研究可分析android应用程序的Java SE应用程序。 是否有任何可用于验证AndroidManifest.xml的架构/ DTD?如果找到名称空间定义,例如: 但是schemas.android.com不能解析为实际主机,因此那里没有架构文件:-( 注:我 不 希望做验证在Android作为一个平台。 问题答案: Android XML没有DTD /方案 ,您必须依靠其他可