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

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

最佳答案

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 boolean 返回值.

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

关于java - 删除文件夹中的部分文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45174365/

相关文章:

java - 无法从 Jax-ws Web 服务返回列表的 ArrayList

c - lseek 在 O_APPEND mod 中导致分段文件

c - 如何在C中的不同行中将字符串写入文件

java - 如何重新分配 StringBuffer 的值?

java - StringBuilder 与 StringBuffer 与 JUnit 的令人困惑的基准测试结果

java - 使用平行于 X 轴的线的孵化算法

Java - 连接到 Linux 上的 SQL Server 数据库

Java EnumSet 语法帮助

c - 什么是文本文件?

Java : Clearing StringBuffer contents