在Java中为多个文件名添加字符

时间:2014-01-29 15:36:20

标签: java renaming

我目前有一个大文件夹,其格式为:

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个字母前缀的文件执行此操作。所有数字都会随着文件的不同而变化。

如果有人能给我一个正确方向的推动,那将非常感激。

感谢。

5 个答案:

答案 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)

这是一个可能的解决方案。

我使用以下链接来帮助我:

  1. Nagesh Chauhan的文件重命名解决方案 http://www.beingjavaguys.com/2013/08/create-delete-rename-file-in-java.html

  2. 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();               
    }
    

    }