2014-01-29 3 views
0

Я в настоящее время имеют большую папку с именами файлов в формате:Добавление символов в нескольких имен файлов в Java

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 буквенного префикса. Однако все числа меняются от файла к файлу.

Если кто-то может дать мне толчок в правильном направлении, это будет очень признательно.

Спасибо.

+1

не мог обстреливать сценарий быть лучшим инструментом для решения этой проблемы? :) –

ответ

2

Использование substring.

String fileName = "EXA_0100_01012014"; 
String newFileName = fileName.substring(0, 3) + "_B_" + fileName.substring(4); 

Возвращает newFileName как:

EXA_B_0100_01012014 
+0

+1 короткий, сладкий, и к делу. – csmckelvey

0

Здесь вы результаты от быстрой Google бомбы: First start looking at the renaming a file, тогда вы можете instert строку, разбив подстроки друг от друга и предваряя первые 3 символа и добавление остальных после «_B». Подобно this.

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)); 
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"))); 
      } 
     } 
    } 
} 
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

    импорт java.io. Файл; 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();    
    } 
    

    }

Смежные вопросы