2016-05-17 20 views
-1

Ok, also ich habe einen Ordner mit etwa 2000 Bildern, alle mit seltsamen Namen, ich möchte das ganze Ding durchschleifen, und benennen sie in "etwas" + die Nummer (ich in der für Schleife). Gibt es überhaupt eine Datei umzubenennen, wenn Sie nur den Ort im Verzeichnis kennen und nicht den Namen. Ich schätze das Hauptproblem ist, den Namen der Datei an Index x in einem Verzeichnis zu bekommen, gibt es das sowieso?Umbenennen einer obskuren Datei Java

public class stuff { 
    static ArrayList<File> images = new ArrayList<>(); 

    public static void main(String[] args) throws IOException{ 
    Files.walk(Paths.get("C:\\Users\\Seth Gower\\Pictures\\Stuff for imgur\\iFunny Dumps\\iFunny Dump (All)")) 
     .forEach(filePath -> { 
     if (Files.isRegularFile(filePath)) { 
      images.add(new File(filePath.toString())); 
     } 
     }); 
    for(File x : images) 
     System.out.println(x.getName()); 

    for (int i = 0; i < images.size(); i ++){ 
     System.out.println(images.get(i).renameTo(new File(
      "C:\\Users\\Seth Gower\\Pictures\\Stuff for imgur\\iFunny Dumps\\iFunny Dump (All)" + "\\" + "ifunnyDump" + i))); 
    } 
    } 
} 
+2

Ja ist wirklich ein Verzeichnis angegeben, gibt es. Welchen Code hast du bisher probiert? – hexafraction

+0

Ich habe versucht, nur alle Dateien zu einer ArrayList hinzufügen, umbenennen sie alle und dann überschreiben alle vorhandenen in den Ordner mit den umbenannten, aber das ist sehr innecient –

+0

Haben Sie in Betracht gezogen, sortieren die ArrayList in der gleichen Sortierreihenfolge als Betriebssystem-Dateimanager, und dann umbenennen Sie einfach die n-te Datei in dieser Arraylist? – hexafraction

Antwort

2
static ArrayList<File> images = new ArrayList<>(); 

public static void main(String[] args) throws IOException{ 
    Files.walk(Paths.get("path")).forEach(filePath -> { 
     if (Files.isRegularFile(filePath)) { 
      images.add(new File(filePath.toString())); 
     } 
    }); 
    for (int i = 0; i < images.size(); i ++){ 
     images.get(i).renameTo(new File("path" + "\\" + "text" + i + ".jpg")); 
    } 


} 

Das funktionierte dank @hexafraction und @MatthewStrawbridge

+1

Könnte besser sein, könnte es am Ende umbenennen png-Dateien in jpg. – Bill

+0

Dies ist äußerst ineffizient.Es kann funktionieren, aber es ist wirklich eine schlechte Übung, unnötig Speicher zu verbrauchen, indem man jede Datei einmal durchläuft, um sie einer Arrayliste hinzuzufügen, und dann diese Arraylist durchläuft, um sie umzubenennen, wenn Java die Fähigkeit hat, Dateinamen nativ zu lesen/schreiben. – sbowde4

+1

@ sbowde4 Als Beispielcode oder ein Schusscode für ein paar tausend Dateien auf einem Computer mit Gigabyte RAM. Das ist gut. Der Autor machte keine Behauptungen über die Speichereffizienz. – Bill

0

Das ist wirklich einfach

müssen Sie zuerst das Verzeichnis von Dateien in

File dir = new File("C:\\yourdirectory"); 

jetzt ein benennen Sie es Sie brauchen, um jede Datei im Verzeichnis Schleife befinden finden. A für jede Schleife wäre am besten. Wenn Sie vor der Schleife möchten, können Sie überprüfen, ob das Verzeichnis, das Sie mit if (dir.isDirectory())

int i = 0; 
for (File f : dir.listFiles()) { 
    try { 
     f.renameTo("YourText_"+i+".jpg"); 
     i++; 
    } 
    catch (Exception e) 
    { 
     System.out.println(e); 
    } 

} 
+0

Nicht so gut, weil es die Erweiterung abbricht. – Bill

+0

Ich habe nur vergessen, es hinzuzufügen, es ist wirklich einfach, es in sich selbst zu setzen, indem Sie 'f.renameTo (" YourText _ "+ i +". Jpg ");' – sbowde4

+0

danke, ich markierte nur die andere als Antwort weil das ist die eine, die ich benutzt habe (da es meine eigene Antwort ist), aber deine ist auch gut. –