删除文件夹

时间:2017-07-18 18:21:36

标签: java file stringbuffer substring

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

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));
}

1 个答案:

答案 0 :(得分:2)

  

Okay there any other way to rename the files?

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

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

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

如果移动失败,那将抛出描述性异常,而不是来自renameTo()false布尔返回值。

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