我目前陷入了重命名文件的问题。
import java.io.File;
import java.io.IOException;
public class FileRename {
public static void main(String[] argv) throws IOException {
File folder = new File("x:\\chadhold\\test\\");
File[] listOfFiles = folder.listFiles();
if(listOfFiles != null){
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File("x:\\chadhold\\test\\"+listOfFiles[i].getName());
String currentName = f.getName();
currentName = currentName.replace(".D**************", ".D******.T********");
f.renameTo(new File("x:\\chadhold\\test\\" + currentName));
// f.renameTo(new File("x:\\chadhold\\test\\" +currentName.substring(0, currentName.lastIndexOf("."))));
}
}
}
System.out.println("conversion is done");
}
}
所以我在这里尝试做的是找到以.D开头的文件 这些文件以时间戳结束,这就是我使用*****的原因,因为每个文件的名称都不同。
我需要输入.T并从文件名中删除最后2个字符。
希望我解释得足够好!
提前致谢。
答案 0 :(得分:0)
不要在字符串上使用replace方法,而是最好制作一个解析文件名并返回新文件名的方法。
public static void main(String[] args) {
System.out.println(newFileName("AFK0281.EETM.D1TWP015-02.20170208200225253"));
}
private static String newFileName(String currentName) {
String[] parts = currentName.split("\\.");
String last = parts[parts.length - 1];
parts[parts.length - 1] = "D" + last.substring(2, 8) + ".T" + last.substring(9);
StringBuilder sb = new StringBuilder();
for (String s : parts) {
sb.append(s).append(".");
}
String newName = sb.toString();
return newName.substring(0, newName.length() - 1);
}
输出
AFK0281.EETM.D1TWP015-02.D170208.T200225253