Hallo,
ich habe folgende Situation:
Es gibt 100 Ordner in einem root-Verzeichnis mit etlichen Unterverzeichnissen. Diese 100 Ordner sollen eine Namenserweiterung erhalten, welche in einer Title-Datei in jedem dieser 100 Ordner steckt, leider taucht diese Datei mehrmals in den Unterordnern auf, i.d.R. zwei Mal. Ich bin soweit, dass ich die Dateien in den Ordnern finde und auslesen kann.
Ich weiß leider nicht so ganz weiter. Könnte man mit einer switch:case anweisung evt. die Unterverzeichnisse durchsuchen die aufhört zu suchen wenn die Datei gefunden wurde? Das ist irgendwie schwierig mit der Switch-Case-Anweisung wegen des rekursiven Aufrufes, dazu bräuchte ich ja eine Flag-Variable die ich setze wenns File gefunden wurde, aber die wird in der Methode Such-Methode ständig überschrieben.
Und dann weiß ich auch nicht so ganz wie ich das mit dem Umbenennen machen soll
Ich hoffe, das ist nicht allzu unübersichtlich ???:L
ich habe folgende Situation:
Es gibt 100 Ordner in einem root-Verzeichnis mit etlichen Unterverzeichnissen. Diese 100 Ordner sollen eine Namenserweiterung erhalten, welche in einer Title-Datei in jedem dieser 100 Ordner steckt, leider taucht diese Datei mehrmals in den Unterordnern auf, i.d.R. zwei Mal. Ich bin soweit, dass ich die Dateien in den Ordnern finde und auslesen kann.
Ich weiß leider nicht so ganz weiter. Könnte man mit einer switch:case anweisung evt. die Unterverzeichnisse durchsuchen die aufhört zu suchen wenn die Datei gefunden wurde? Das ist irgendwie schwierig mit der Switch-Case-Anweisung wegen des rekursiven Aufrufes, dazu bräuchte ich ja eine Flag-Variable die ich setze wenns File gefunden wurde, aber die wird in der Methode Such-Methode ständig überschrieben.
Und dann weiß ich auch nicht so ganz wie ich das mit dem Umbenennen machen soll
Java:
public class OrdnerUmbenennen
{
private static ArrayList<String> rootDirs = new ArrayList<String>(); //Hält alle Verz. zum umbenennen
private static ArrayList<String> erweiterungen = new ArrayList<String>(); //Hält die Namens-Erweiterungen
private static newPos = 0; //hält die Pos der neuen Namen, in der Liste
private static altPos=0; //hält die Position der alten Verzeichnise in der Liste
//root-Verz. auslesen und Verzeichnispfade speichern
private static void readRoot(String path, String find){
try{
File maindir = new File(path);
File[] files = maindir.listFiles();
for(int i=0; i<=files.length; i++){
if(files[i].isDirectory())
rootDirs.add(files[i].getAbsolutePath());
}
}catch(Exception e){}
for(String dir: rootDirs){
readDir(dir, find);
}
}
//Unterverzeichnisse nach der Titledatei durchsuchen
private static void readDir(String dir, String find){
try{
File maindir = new File(dir);
File[] files = maindir.listFiles();
for(int i=0; i<=files.length; i++){
if(files[i].isDirectory()) {
readDir(files[i].getAbsolutePath(), find);
}
else (files[i].getName().equalsIgnoreCase(find)){
readTitle(files[i].getAbsolutePath()); //Titel auslesen lassen
}
}
}catch(Exception e){}
}
//Title-Datei auslesen
private static void readTitle(String path){
try{
BufferedReader br = new BufferedReader(new FileReader(path));
erweiterungen.add(br.readLine());
}catch(Exception e){}
}
//Ordner umbenennen
public static void rename(String alt){
File Dir = new File(alt);
String new = alt.get(altPos)+erweiterungen.get(newPos));
Dir.renameTo(new);
altPos+=1
newPos+=2;
}
}
//Main-Funktion die alles startet
public static void main(String[] args){
readRoot("Test", "title");
for(String alt : rootDirs){
System.out.print("Rename "+alt+" into ");
rename(alt);
}
}
}
Zuletzt bearbeitet: