2010-04-27 6 views

Antwort

3

Verwenden Sie File.listFiles(...), um die Dateien im Verzeichnis aufzulisten, String.substring(...), um die neuen Dateinamen zu bilden, und File.rename(...), um die Umbenennung durchzuführen.

Aber ich schlage vor, dass Sie Ihre Anwendung überprüfen, dass es alle Dateien ohne Kollisionen umbenennen kann, bevor Sie die Umbenennung starten.

Aber @ Pascals Kommentar ist genau richtig. Java ist nicht das einfachste Werkzeug, um so etwas zu tun.

1

Java ist eine schlechte Wahl für diese Art von Arbeit. Eine viel bessere Wahl wäre eine JVM-Skriptsprache wie Groovy. Wenn Sie diese Option verfolgen wollen

Schritt 1:

Herunterladen und Installieren von Groovy

Schritt 2:

Starten Sie den groovy Konsole

Schritt 3:

Führen Sie dieses Skript

def dirName = "/path/to/pdf/dir" 

new File(dirName).eachFile() { file -> 
    def newName = file.getName()[5..-1] 
    File renamedFile = new File(dirName + "/" + newName) 
    file.renameTo(renamedFile) 

    println file.getName() + " -> " + renamedFile.getName() 
}  

Ich gehe davon aus hier, dass alle Dateien in dem Verzeichnis sind /path/to/pdf/dir. Wenn sich einige von ihnen in Unterverzeichnissen dieses Verzeichnisses befinden, verwenden Sie File.eachFileRecurse statt File.eachFile.

+0

+1, weil ich glaube nicht, dass diese Antwort 3 downvotes verdient, besonders ohne irgendeine Erklärung. –

+0

Könnten Sie bitte Ihren Standpunkt rechtfertigen? Es hängt wirklich davon ab, wonach er sucht. Wenn er eine GUI-basierte Anwendung möchte, wäre Java in Ordnung. – captainspi

+1

@SPI Ich nehme an (vielleicht falsch), dass dies eine einmalige Aufgabe –

0

Wenn Sie Windows verwenden, sollten Sie die Eingabeaufforderung oder eine .bat-Datei verwenden. Windows unterstützt Platzhalter-Umbenennungen nativ auf Betriebssystemebene, so dass es um Größenordnungen schneller ist als Java, das über alle Namen iterieren und Umbenennungsanrufe für jeden ausgeben muss.

17

Beispielcode zum Umbenennen der Liste der Dateien in einem bestimmten Verzeichnis. Im folgenden Beispiel ist c:\Projects\sample der Ordner, die Dateien, die unter die aufgeführt sind, wurden zu 0.txt umbenannt, 1.txt, 2.txt usw.

Ich hoffe, das Ihr Problem lösen

import java.io.File; 
import java.io.IOException; 

public class FileOps { 


    public static void main(String[] argv) throws IOException { 

     File folder = new File("\\Projects\\sample"); 
     File[] listOfFiles = folder.listFiles(); 

     for (int i = 0; i < listOfFiles.length; i++) { 

      if (listOfFiles[i].isFile()) { 

       File f = new File("c:\\Projects\\sample\\"+listOfFiles[i].getName()); 

       f.renameTo(new File("c:\\Projects\\sample\\"+i+".txt")); 
      } 
     } 

     System.out.println("conversion is done"); 
    } 
} 
12

so etwas wie dies tun sollte (Windows-Version):

import java.io.*; 

public class RenameFile { 
    public static void main(String[] args) { 
     // change file names in 'Directory': 
     String absolutePath = "C:\\Dropbox\\java\\Directory"; 
     File dir = new File(absolutePath); 
     File[] filesInDir = dir.listFiles(); 
     int i = 0; 
     for(File file:filesInDir) { 
      i++; 
      String name = file.getName(); 
      String newName = "my_file_" + i + ".pdf"; 
      String newPath = absolutePath + "\\" + newName; 
      file.renameTo(new File(newPath)); 
      System.out.println(name + " changed to " + newName); 
     } 
    } // close main() 
} // close class 
0

Wenn Sie auf MacOS X und wollen alle Dateien in Ordnern und Unterordner von einem externen Laufwerk umbenennen, unter dem Code wird die Arbeit tun:

public class FileOps { 

    public static void main(String[] argv) throws IOException { 
     String path = "/Volumes/FAT32/direito_administrativo/"; 
     File folder = new File(path); 
     changeFilesOfFolder(folder); 
    } 

    public static void changeFilesOfFolder(File folder) { 
     File[] listOfFiles = folder.listFiles(); 

     if (listOfFiles != null) { 
      int count = 1; 
      for (int i = 0; i < listOfFiles.length; i++) { 
       if (listOfFiles[i].isFile()) { 
        File f = new File(folder.getPath() + "/" + listOfFiles[i].getName()); 
        f.renameTo(new File(folder.getPath() + "/" + count + ".flv")); 
        count++;      
       } else if (listOfFiles[i].isDirectory()) { 
        changeFilesOfFolder(listOfFiles[i]); 
       } 
      } 
     } else { 
      System.out.println("Path without files"); 
     } 
    } 
} 
0

Dies werden Sie erwähnt, alle Dateinamen des Ordners ändern: dies aber bash oder eine Skriptsprache

for (int i = 0; i < folders.length; i++) { 
    File folder = new File("/home/praveenr/Desktop/TestImages/" + folders[i]); 
    File[] files2 = folder.listFiles(); 

    int count = 1; 
    for (int j = 0; j <files2.length; j++,count++) { 
     System.out.println("Old File Name:" + files2[j].getName()); 
     String newFileName = "/home/praveenr/Desktop/TestImages/" + folders[i]+"/file_"+count+"_original.jpg"; 
     System.out.println("New FileName:" + newFileName); 
     files2[j].renameTo(new File(newFileName)); 
    } 

} 
Verwandte Themen