【发布时间】:2017-12-23 18:27:49
【问题描述】:
以下代码有效,但我的问题是控制台输出显示正确,例如:
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));
}
【问题讨论】:
-
我什至使用了子字符串方法 String name = file.getName().substring(0,20);而且它仍然做同样的事情并不是文件夹中的所有文件名都被更改
-
有没有办法克服这个问题?在这种情况下,子字符串和索引对我不起作用,
-
您想要实现的是从原始文件名中删除 -2017xxxx- 模式?
-
实际上我正在尝试从 -2017 中删除所有内容并返回是
-
file.renameTo 不能保证有效。如果失败,则返回布尔值 false。
标签: java file stringbuffer substring