使用正则表达式匹配拓展名

  • Post author:
  • Post category:其他


今天把手机里的图片通过qq发送到电脑上,发现文件多了后缀“.gif.JPG”。手动改因为图片太多了,就用java代码给文件去掉多余的后缀。

要迭代所有的文件夹下的所有文件,并判断当前文件是否存在多余后缀

public static void main(String[] args) {
        //创建文件路径
//        String string = "E:\\视频\\b站大佬";
        String string = "E:\\图片";
        //创建文件对象
        File file = new File(string);
        //将文件夹中的文件读取出来,放入File数组
        RenameFile(file);
    }

    private static void RenameFile(File file) {
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()) {
                RenameFile(file1);
            } else {
                String fileName = file1.getName();
                boolean matches = fileName.matches("^.+(\\.[a-zA-Z]+){2}$");
                if (matches) {
                    System.out.println(fileName);
                    int i = fileName.lastIndexOf(".");
                    String newName = fileName.substring(0, i);
                    file1.renameTo(new File(file.getAbsolutePath() + "\\" + newName));
                }
            }
        }
    }

使用的是正则表达式来对字段进行过滤,因为正则表达式刚自学了没几天,所以使用的有些生疏

"^.+(\\.[a-zA-Z]+){2}$"

使用时我认为的难点:

“.”单独使用的时候表示除换行符之外的所有字符,加上“\”后表示字符“.”。

我没加上“\”时,把所有的文件都查出来了

{n}这个表示某个字符或子表达式有且只有几个或几次,

注意:

这个其实还是有bug的,会把其他不是图片的文件也查出来,所以还要做个判断




版权声明:本文为SimpleCow原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。