java用正则方法验证文件名是否合法

这篇具有很好参考价值的文章主要介绍了java用正则方法验证文件名是否合法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java中用到文件操作时,经常要验证文件名是否合法. 用File类的createNewFile()方法的确很管用.但当要批量验证时,效率上就会有问题.正则匹配的开销比创建文件少了很多. 那么一个合法的文件(Win下)应该符合如下规则: 

1.文件名不能为空,空在这里有两个意思: 

  1. 文件名(包括扩展名)长度为0或仅由空字符组成(包括\t\b等不可见的转义字符)
  2. 文件名和扩展名不能同时为空.但实际上我们可以用程序创建出类似.project,..txt等形式的文件,但却创建不出类似abc.的文件 

2.文件名中不能包含\/:*?"<>|中的任意字符 

3. 文件名(包括扩展名)的长度不得大于255个字符 事实上形如".."(不包含引号,下同)的文件也不能被创建. 不合法的文件还有类似" aa", "aa ", "aa."(会被创建为"aa",也把它算作不合法),"a\ta"(\t为制表符等不可见字符(除空格外)) 

于是我们得到了文件名命名规则的更详细规定: 

1.首尾不能有空字符(空格、制表符、换页符等空白字符的其中任意一个),文件名尾不能为.号

2.文件名和扩展名不能同时为空 

3.文件名中不能包含\/:*?"<>|中的任意字符 

4.文件名(包括扩展名)的长度不得大于255个字符 

5.在1.的条件下,文件名中不能出出现除空格符外的任意空字符.

出 现控制字符其实也算不合法,但因为情况太复杂,就不做判断了。 于是有如下匹配 首字符: [^\s\\/:\*\?\"<>\|]尾字符: [^\s\\/:\*\?\"<>\|\.]其它字符: (\x20|[^\s\\/:\*\?\"<>\|])* \s 只能匹配下面六种字符(via: java.util.regex.Pattern): 半角空格( ) 水平制表符(\t) 竖直制表符 回车(\r) 换行(\n) 换页符(\f) 

用Java语言实现:

public static boolean isValidFileName(String fileName) { if (fileName == null || fileName.length() > 255) return false; else return fileName.matches("[^\\s\\\\/:\\*\\?\\\"<>\\|](\\x20|[^\\s\\\\/:\\*\\?\\\"<>\\|])*[^\\s\\\\/:\\*\\?\\\"<>\\|\\.]$"); }文章来源地址https://www.toymoban.com/news/detail-692047.html

到了这里,关于java用正则方法验证文件名是否合法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java下载文件,中文文件名乱码问题解决(文件名包含很多%)

    一般情况下,大家都是这样: 其实乱码就是乱在;filename=\\\" + fileName这里,对文件名的编码设定上。 使用URLEncoder.encode(filepath,\\\"UTF-8\\\")虽然可以解决在提示下载框中正确显示汉字文件名的问题,并且在选择保存,然后打开的情况下,文件名称也可以正确的显示。 但是在提示下载框

    2024年02月12日
    浏览(51)
  • MultipartFile获取文件名、文件后缀等方法

    获取文件名及后缀信息 获取文件名 获取文件后缀 获取文件类型 获取文件大小 输出结果:

    2024年02月11日
    浏览(62)
  • MultipartFile获取文件名,文件大小,文件后缀等方法

    获取文件名及后缀信息: 获取文件名: 获取文件后缀:这个后缀带‘.’如:.zip,如果不想带‘.’这样即可lastIndexOf(\\\".\\\")+1 获取文件类型: 获取文件大小:

    2024年02月16日
    浏览(69)
  • java正则表达式(附带案例——检测手机号码是否合法)

    Java正则表达式是一种用于匹配字符串的模式,它可以用来检查一个字符串是否符合某种格式,或者从一个字符串中提取出符合某种格式的子串。Java中的正则表达式使用java.util.regex包来实现。 以下是一些常用的Java正则表达式语法: 1. 字符类:用方括号[]表示,匹配方括号中的

    2024年02月11日
    浏览(55)
  • java修文件名名称

    在java中如何修改文件名称呢?以下函数可以直接实现,如果修改成功会直接返回true,不成功则会提示错误信息;以下是程序的代码: 函数的两个参数分别为:原本的文件路径,新路径名。路径即文件路径+文件名。

    2024年02月15日
    浏览(40)
  • java获取文件夹下所有文件名

      在进行 Java编程的过程中,我们会经常使用到文件夹下的所有文件名。有时候可能不太熟悉 Java编程的小伙伴们会发现,在代码中没有获取到所有的文件名,那么这个时候我们应该怎么去获取到这些文件呢?在进行 Java编程的过程中,我们会经常使用到 Java里面的 JDBC数据库连

    2024年02月10日
    浏览(71)
  • Linux中文件名修改的多种方法

    找一个不算漂亮的普通女孩,一起柴米油盐,一起日出日落,一起田间地头,一起春花冬雪!要一个不算大的小房子,生两个健康可爱的宝宝,这样就很好。。。。。。 简介: 在Linux系统中,通过命令行界面可以方便地修改文件名。本篇博客将介绍几种常见的方法,包括 m

    2024年01月18日
    浏览(42)
  • u盘文件名乱码的恢复方法

        文件名全部变乱码了怎么恢复?U盘数据恢复方法 电脑里的目录文件名乱码了,这是什么状况呢?好端端的电脑突然就成这个样子了,真是令人摸不着头脑,对于这样的状况,多半是文件类型引起的,那么接下来还是让小编给大家介绍一下这个问题目录文件名乱码的解决

    2024年02月03日
    浏览(40)
  • linux修改文件名的三种方法

    我们在使用linux系统过程中为了便于记忆或整理维护,经常需要对文件名进行修改,下面文章介绍了linux系统的三种修改文件名称的方式。 语法:mv [options] source dest 参数说明: 示例:将a.txt修改为a1.txt 语法:cp [options] source dest 参数说明: 示例:将a.txt修改为a1.txt,通过cp命令

    2024年02月02日
    浏览(55)
  • Java文件下载中文文件名乱码的解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月13日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包