删除文件夹中的部分文件名

Removing Parts of File names in Folder

下面的代码有效,但我的问题是控制台输出正确显示,例如:

3-M-ALABAMA-SUIQUARTER2
3-M-ALABAMA-SUIQUARTER2
3-M-ALABAMAW-22017
3-M-ALABAMAW-22017

上面的输出显示我的索引是 -2017 但是当文件夹中的实际文件名被更改时,一些文件名被跳过。例如

原文件名:3-M-ALABAMA-SUIQUARTER2-2017200346-CD6140
控制台输出:3-M-ALABAMA-SUIQUARTER2
文件夹中的一些文件未更改:3-M-ALABAMA-SUIQUARTER2-2017200346-CD6140

但是文件夹中的一些文件有 3-M-BATTLECREEKMIW-22017-2017200346-CD619B 而有些是 3-M-ARLINGTONOHLOCALW-2-2017200346-CD61A8

所以我认为 java 对在文件更改中进行实际更改时在哪里中断感到困惑?你能帮助我吗?

for(File file:filesInDir) {
       x++;
       String name = file.getName().substring(0, file.getName().indexOf("-2017"));
       String newName = name;
       System.out.println(newName); // prints prints to file 
       String newPath = absolutePathOne + "\" + newName;
       file.renameTo(new File(newPath));
}

是的。使用较新的 NIO 2 类,特别是 Files.move() 方法。

至少,将 file.renameTo(new File(newPath)) 替换为:

Files.move(file.toPath(), Paths.get(newPath));

如果移动失败,将抛出描述性异常,而不是 renameTo().

中的 false 布尔值 return

您还应该更改其余代码以使用更新的 类。虽然不是必需的,但建议这样做。