Vielleicht kein passendes Thema für Java-Einsteiger. Deshalb versuch ich es hier erneut:
Hallo liebe Community. Ich stehe vor folgendem Problem:
Ich soll eine Art Überwachungstool schreiben, dass vorgegebene Ordnern scannen soll und welches mir auf falsch benannte Ordner eine Warnung ausgeben soll.
Das Grundprinzip sieht so aus, dass ich mir eine Textdatei erzeugen lasse in der die aktuelle Verzeichnissstruktur steht. Ich übergebe den Pfad der gescannt werden soll als Argument und speichere mir die Pfade / Unterpfade bis zur Datei-ebene in einen Vector.
Danach schreib ich diesen Vector einfach in eine Textdatei:
Diese sieht bspw. so aus:
Diese Textdatei wird dann gegen eine "config.txt" überprüft die folgendermaßen aussieht:
Nun zu meinem Problem: Wie Ihr seht, dürfen Ordner, die hier mit einem * gekennzeichnet sind, heißen wie sie wollen. Die * am jeweiligen Zeilenende bedeuten, dass sich darunter beliebig viele Unterordner / Dateien befinden dürfen und diese auch beliebig heißen dürfen.
Ich habe mich mal etwas mit apache common io bzw. mit Regular Expresions beschäftigt, aber glaube nicht, dass ich mit meinem Ansatz so ans Ziel komme.
Hat vielleicht jemand von euch schonmal soetwas gemacht und hat mir ein paar Tipps wie es u.U. auch einfacher geht?
Viele Grüße und ein recht herzliches Dankeschön im Voraus!!
Hallo liebe Community. Ich stehe vor folgendem Problem:
Ich soll eine Art Überwachungstool schreiben, dass vorgegebene Ordnern scannen soll und welches mir auf falsch benannte Ordner eine Warnung ausgeben soll.
Das Grundprinzip sieht so aus, dass ich mir eine Textdatei erzeugen lasse in der die aktuelle Verzeichnissstruktur steht. Ich übergebe den Pfad der gescannt werden soll als Argument und speichere mir die Pfade / Unterpfade bis zur Datei-ebene in einen Vector.
Java:
public void createDirIndex (String aDir) throws IOException{
System.out.println(aDir);
v.add(aDir);
File f = new File(aDir);
File[] index = f.listFiles();
for (int i = 0; i < index.length; i++){
if (index[i].isDirectory()){
createDirIndex(index[i].getAbsolutePath());
}
}
}
Danach schreib ich diesen Vector einfach in eine Textdatei:
Java:
public void writeToFile(Vector<String> aTextVector){
try {
//Schreibt so nur eine Zeile
//>> zuerst einlesen und dann anfügen
FileWriter out = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(out);
for (int i = 0; i < aTextVector.size(); i++){
bw.write(aTextVector.get(i).toString());
bw.newLine();
}
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Diese sieht bspw. so aus:
Code:
C:\I0100_Projekte\Integration\00abgeschlossen
C:\I0100_Projekte\Integration\Testprojekt
C:\I0100_Projekte\Integration\Testprojekt\1_Projektmanagement
C:\I0100_Projekte\Integration\Testprojekt\2_Kommunikation
C:\I0100_Projekte\Integration\Testprojekt\2_Kommunikation\01_Besprechungen
C:\I0100_Projekte\Integration\Testprojekt\2_Kommunikation\02_Statusberichte
C:\I0100_Projekte\Integration\Testprojekt\2_Kommunikation\03_Praesentationen
C:\I0100_Projekte\Integration\Testprojekt\3_Phasen
C:\I0100_Projekte\Integration\Testprojekt\3_Phasen\01_Projektinitiierung
C:\I0100_Projekte\Integration\Testprojekt\3_Phasen\02_Requirement und Analyse
C:\I0100_Projekte\Integration\Testprojekt\3_Phasen\03_Implementierung und Test
C:\I0100_Projekte\Integration\Testprojekt\3_Phasen\04_Projektabschluss
C:\I0100_Projekte\Integration\Testprojekt\4_Bilder und Diagramme
C:\I0100_Projekte\Integration\Testprojekt\5_Teilprojekte(optional)
C:\I0100_Projekte\Integration\Testprojekt2
C:\I0100_Projekte\Integration\Testprojekt2\1_Projektmanagement
C:\I0100_Projekte\Integration\Testprojekt2\2_Kommunikation
C:\I0100_Projekte\Integration\Testprojekt2\2_Kommunikation\01_Besprechungen
C:\I0100_Projekte\Integration\Testprojekt2\2_Kommunikation\02_Statusberichte
C:\I0100_Projekte\Integration\Testprojekt2\2_Kommunikation\03_Praesentationen
C:\I0100_Projekte\Integration\Testprojekt2\3_Phasen
C:\I0100_Projekte\Integration\Testprojekt2\3_Phasen\01_Projektinitiierung
C:\I0100_Projekte\Integration\Testprojekt2\3_Phasen\02_Requirement und Analyse
C:\I0100_Projekte\Integration\Testprojekt2\3_Phasen\03_Implementierung und Test
C:\I0100_Projekte\Integration\Testprojekt2\3_Phasen\04_Projektabschluss
C:\I0100_Projekte\Integration\Testprojekt2\4_Bilder und Diagramme
C:\I0100_Projekte\Integration\Testprojekt2\5_Teilprojekte(optional)
C:\I0100_Projekte\Integration\Testprojekt3
C:\I0100_Projekte\Integration\Testprojekt3\1_Projektmanagement
C:\I0100_Projekte\Integration\Testprojekt3\2_Kommunikation
C:\I0100_Projekte\Integration\Testprojekt3\2_Kommunikation\01_Besprechungen
C:\I0100_Projekte\Integration\Testprojekt3\2_Kommunikation\02_Statusberichte
C:\I0100_Projekte\Integration\Testprojekt3\2_Kommunikation\03_Praesentationen
C:\I0100_Projekte\Integration\Testprojekt3\3_Phasen
C:\I0100_Projekte\Integration\Testprojekt3\3_Phasen\01_Projektinitiierung
C:\I0100_Projekte\Integration\Testprojekt3\3_Phasen\02_Requirement und Analyse
C:\I0100_Projekte\Integration\Testprojekt3\3_Phasen\03_Implementierung und Test
C:\I0100_Projekte\Integration\Testprojekt3\3_Phasen\04_Projektabschluss
C:\I0100_Projekte\Integration\Testprojekt3\4_Bilder und Diagramme
C:\I0100_Projekte\Integration\Testprojekt3\5_Teilprojekte(optional)
Diese Textdatei wird dann gegen eine "config.txt" überprüft die folgendermaßen aussieht:
Code:
c:\I0100_Projekte\Integration\00abgeschlossen\*
c:\I0100_Projekte\Integration\*\1_Projektmanagement\*
c:\I0100_Projekte\Integration\*\2_Kommunikation
c:\I0100_Projekte\Integration\*\2_Kommunikation\01_Besprechungen\*
c:\I0100_Projekte\Integration\*\2_Kommunikation\02_Statusberichte\*
c:\I0100_Projekte\Integration\*\2_Kommunikation\03_Praesentationen\*
c:\I0100_Projekte\Integration\*\3_Phasen
c:\I0100_Projekte\Integration\*\3_Phasen\01_Projektinitiierung\*
c:\I0100_Projekte\Integration\*\3_Phasen\02_Requirement und Analyse\*
c:\I0100_Projekte\Integration\*\3_Phasen\03_Implementierung und Test\*
c:\I0100_Projekte\Integration\*\3_Phasen\04_Projektabschluss\*
c:\I0100_Projekte\Integration\*\4_Bilder und Diagramme\*
c:\I0100_Projekte\Integration\*\5_Teilprojekte(optional)\*
Nun zu meinem Problem: Wie Ihr seht, dürfen Ordner, die hier mit einem * gekennzeichnet sind, heißen wie sie wollen. Die * am jeweiligen Zeilenende bedeuten, dass sich darunter beliebig viele Unterordner / Dateien befinden dürfen und diese auch beliebig heißen dürfen.
Ich habe mich mal etwas mit apache common io bzw. mit Regular Expresions beschäftigt, aber glaube nicht, dass ich mit meinem Ansatz so ans Ziel komme.
Hat vielleicht jemand von euch schonmal soetwas gemacht und hat mir ein paar Tipps wie es u.U. auch einfacher geht?
Viele Grüße und ein recht herzliches Dankeschön im Voraus!!