我目前有一个大文件夹,其格式为:
EXA_0100_01012014.csv
EXA_0114_11012014.csv
一开始总是相同的3个字母。我需要更改所有这些文件名,以便它们采用以下格式:
EXA_B_0100_01012014
所以这只是在前三个字母之后插入_B(总是_B)的情况。我刚刚开始学习Java,所以到目前为止我的尝试相当有限:
File oldfile = new File("EXA_0100_01012014.csv");
File newfile = new File("EXA_B_0100_01012014.csv");
我只需要为大量具有相同3个字母前缀的文件执行此操作。所有数字都会随着文件的不同而变化。
如果有人能给我一个正确方向的推动,那将非常感激。
感谢。
答案 0 :(得分:2)
使用substring
。
String fileName = "EXA_0100_01012014";
String newFileName = fileName.substring(0, 3) + "_B_" + fileName.substring(4);
将newFileName
返回为:
EXA_B_0100_01012014
答案 1 :(得分:1)
我的建议:
String newFilename = oldfile.getFileName().replace("EXA_", "EXA_B_");
oldfile.renameTo(new File(newFilename));
如果您不喜欢replace()
方法,则可以使用substring()
方法。
String oldFilename = oldfile.getFileName();
String newFilename = oldFilename.substring(0, 3) + "_B_" + oldFilename.substring(4);
oldfile.renameTo(new File(newFilename));
答案 2 :(得分:0)
以下是快速谷歌炸弹的结果: First start looking at the renaming a file,然后你可以通过分开子串并在前3个字符前加上字符串并在" _B"之后附加其余字符来打字。与this类似。
答案 3 :(得分:0)
public static void main(String[] h) {
final File folder = new File("/home/you/Desktop");
renameFilesForFolder(folder);
}
public static void renameFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
renameFilesForFolder(fileEntry);
} else {
if (fileEntry.getName().startsWith("EXA")) {
fileEntry.renameTo(new File(fileEntry.getName().replaceAll("(EXA)(_)", "$1_B$2")));
}
}
}
}
答案 4 :(得分:0)
这是一个可能的解决方案。
我使用以下链接来帮助我:
Nagesh Chauhan的文件重命名解决方案 http://www.beingjavaguys.com/2013/08/create-delete-rename-file-in-java.html
Philip Reichart在文件列表中的解决方案 How to get contents of a folder and put into an ArrayList
import java.io.File; import java.io.IOException;
公共类RenameFiles {
public RenameFiles()
{
File f = new File ("C:/work/play/java/list");
File[] list = f.listFiles();
for (int inum = 0; inum < list.length; inum++)
{
File curf = list[inum];
RenameFile(curf);
}
}
public void RenameFile(File curf)
{
String strfilename = curf.getAbsolutePath();
StringBuffer buf = new StringBuffer(strfilename);
int index = buf.indexOf("EXA_");
buf.insert(index+4, "B_");
String strnewfilename = buf.toString();
strnewfilename = strnewfilename.replace('\\', '/');
System.out.println(strnewfilename);
File newFileName = new File(strnewfilename);
try {
if (curf.renameTo(newFileName)) {
System.out.println("File "+strfilename+"renamed to "+strnewfilename+" successful !");
} else {
System.out.println("File "+strfilename+"renamed to "+strnewfilename+" failed !");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
RenameFiles fobj = new RenameFiles();
}
}