删除文件夹中的部分文件名
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
您还应该更改其余代码以使用更新的 类。虽然不是必需的,但建议这样做。
下面的代码有效,但我的问题是控制台输出正确显示,例如:
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
您还应该更改其余代码以使用更新的 类。虽然不是必需的,但建议这样做。