删除Java上的重复扩展文件

时间:2016-11-08 11:10:34

标签: java string file-io

拥有包含以下文件的文件夹

myoutput.pdf
hello.pdf.pdf
byebye.txt
hey.txt.txt

如何删除仅具有重复扩展名的文件的扩展名?在示例中,只有pdf和txt,但在实际示例中可以是任何类型的扩展。

我到目前为止:

String dir = "C:/Users/test";

File[] files = new File(dir).listFiles();

for (File file : files) {
    if (file.isFile()) {
        System.out.println(file.getName());
    }
}

但我不知道我现在怎么能检测出那些带有重复扩展名的"并将其重命名为"单个扩展名"

我想要的输出是:

myoutput.pdf
hello.pdf
byebye.txt
hey.txt

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用

file.getName().replaceAll("(\\.\\w+)\\1+$", "$1")

请参阅regex demo

模式详情

  • (\\.\\w+) - 第1组捕获一个点和一个或多个字符(\\w+可能会替换为[^.]+以匹配除点之外的1个或多个字符)
  • \\1+ - 在第1组中捕获的相同值的一次或多次出现
  • $ - 字符串结束。

替换模式只是对第1组($1)的反向引用,只有1次出现扩展。

答案 1 :(得分:0)

您可以按以下方式替换代码:

if (file.isFile()) {
    String newFileName = file.getName().replaceAll("(\\.\\w+)\\1+$", "$1");
    file.renameTo(new File(file.getParent() + "/" +newFileName));
}