Ordnerstrukturen durchsuchen und Files bearbeiten

schäfchen

Mitglied
Hallo zusammen!
Meine Java Ausbildung ist nun schon 3 Jahre her und leider hatte ich beruflich in diesen Jahren nichts mit Java zu tun. Aber endlich, endlich darf ich nun und ich muß mit großer Sorge feststellen, ich weiß nicht mehr viel :oops:
Als einer meiner ersten Aufgaben bekam ich folgende Herausforderung:
In einem Ordner befinden sich Files und Directories. In den Directories befinden sich wiederum Files. Nun soll ich bei bestimmten Files (spezielle Endung) diese auslesen, etwas in ihnen ändern und mit der Änderung wieder an ihrem Platz schreiben/das alte File überschreiben.
Bisher ist es mir nur gelungen Files, die direkt im Ordner liegen, den ich als Variable übergebe, zu öffnen, zu bearbeiten und WOANDERS ab zu speichern. Vom durchsuchen der weiteren Ordner bin ich noch weit entfernt und auch vom Überschreiben der ursprünglichen Datei.

Ich hab mir hier schon die FAQ`s zum durchsuchen und bearbeiten von Ordnerstrukturen durchgelesen, komme damit aber auch nicht weiter. Kann mir jemand einen Tipp geben wie ich das Problem mit dem "Datei öffnen, ändern, abspeichern" lösen kann? :rtfm:

Freu mich über jede Hilfe!
Gruß, schäfchen
 

Flown

Administrator
Mitarbeiter
Du holst dir alle Dateien aus deinem Dateisystem mit der gewissen Endung. Danach alles Einlesen - File schließen -, Daten ändern - selbe File öffnen -, reinschreiben, ab zum nächsten File. Erledigt.
 

Network

Top Contributor
Meine Glaskugel sagt mir heute mmmmmhmmmmmmm dein Problem ist das du vergisst den Stream auf die ursprüngliche Datei zu schließen per
InputStream.close()
bevor du den OutputStream erstellst was dann wiederum zu einer Exception führt.

Ansonsten musst du bitte etwas genauer werden was dein Problem ist.

Gruß
Net
 
Zuletzt bearbeitet:

schäfchen

Mitglied
Entschuldige Flow, ich muss nachfragen - du holst dir alle Dateien .... alles Einlesen - soll ich alle Files in ein einziges laden? oder die Files in eine Liste?

Derzeit lade ich alle 'passenden' Files in ein Array und laufe dann über das Array und ändere jedes File. Konnte aber nur eine methode zum laufen bekommen bei dem quelle und ziel des files unterschiedlich waren bzw das ziel als fixer parameter übergeben wird.
mir kommt also im durchlaufen der einzelnen files die stelle abhanden an der ich noch weiß wo ich grad in der ordnerstruktur stehe, denn da muss ich ja das jetzt gerade bearbeitende file wieder hin schreiben.
ich kann euch leider den code nicht zeigen, da hat unsere nette firewall was dagegen (einfügen von kopierten text in den browser geht nicht, hochladen schon gar nicht).
 

Network

Top Contributor
Ich habe eher das Gefühl das hier ist eine "Macht meine Hausaufgaben" mit fertigem Code Frage.
Die Firewall verhindert das kopieren in den Browser, na klar.
Insbesondere weil dein angefragter Code auch gerade mal ein paar Zeilen lang wäre wenn du die spezifischen Sachen rauslässt und nur hinschreibst wie du die Dateien findest, einliest und wieder schreibst.

Noch mehr macht es micht stutzig das du nicht mehr weißt am Ende des Codes wie die Datei nochmal liest.
Du musst den Pfad haben oder ein File Objekt erstellt haben indem alle Informationen drin stehen.

Bitte einfach direkte Fragen stellen, Codebeispiele dazu liefern und nicht drum herum reden.

So funktioniert das verändern einer Datei als abstraktes Beispiel, Zeile für Zeile im String Format.
Java:
File file = new File( "test.txt" );
File temp = new File( "test.txt.temp" );

FileInputStream fis = new FileInputStream( file );
BufferedReader br  = new BufferedReader( new InputStreamReader( fis ) );

FileOutputStream fos = new FileOutputStream( temp );
BufferedWriter bw  = new BufferedWriter( new OutputStreamWriter( fis ) );

String line;
while( (line = br.readLine()) != null ) {
     bw.write( "Diese Zeile wurde geändert " + line + System.lineSeparator() );
}

bw.close();
br.close();

temp.renameTo( file );
 

schäfchen

Mitglied
Hallo zusammen!

Nein, ihr sollt nicht meine Hausübungen lösen, die letzten Hausübungen sind bei mir schon ein Weilchen her ;)
Ja, ich kann nicht in den Browser kopieren, da Aufgrund verschärfter Sicherheitsvorkehrungen der Browser in einer VM läuft und jegliche Kommunikation zwischen meinem BS und der VM untersagt bzw. nicht erlaubt ist. Beim kopieren und einfügen crasht die VM und beim hochladen kommt nur eine Fehlermeldung mit einem Sicherheitshinweis.

Gut egal, ich habs mittlerweile gelöst und wollte die Lösung hier posten. Dazu tipp ich grad alles ab.
Die Lösung für das rekursive Ordner durchsuchen war schlussendlich:
Java:
public static void processFolder(File source, File target){
File[] dateien = source.listFiles();
for (File file : dateien){
if(file.isDirectory()){
			processFolder(file, target);  //das ist für mich neu, ich hatte noch nie mit Rekursion zu tun
		}else{
			if(file.getName().toLowerCase().endsWith(".svg")){
				try {
					parseSVG(file, file); //hier wird das file geöffnet und bearbeitet sowie ein methodenaufruf zur speicherung (somit konnte ich das problem wo ich grad bin in der struktur lösen)
				} catch (Exception e){
e.printStackTrace();}}}

in der Methode parsSVG gibts dann noch folgende Änderungen von mir (Am Ende des Bearbeitungsvorganges des Files):
Java:
String targetPath = target.getPath();
File newTarget = new File(targetPath);
writeFile(doc, newTarget);  //Aufruf um das File wieder an den ursprünglichen Platz zu schreiben

So ich hoffe das war irgendwie verständlich aber die ganze Klasse abzutippen würd ein bissal den Rahmen sprengen. Schlussendlich war für mit die .getPath() Methode und den simplen Aufruf der processFolder Methode mit dem jeweiligen File als Parameter der Lösungsweg. Wie gesagt ich bin in Java ziemlich eingerostet und hab ausser in der Ausbildung damit nicht viel gemacht. Vielleicht wäre das für euch eh ein Klax gewesen bzw. ihr hättet anderswo Probleme gehabt.

LG
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Unterschiedliche Ordnerstrukturen trotz gleicher Entwicklungsumgebungen Java Basics - Anfänger-Themen 3
districon 2D Array - Zeilen und Spalten durchsuchen Java Basics - Anfänger-Themen 3
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
F Array nach Objektattribut durchsuchen Java Basics - Anfänger-Themen 6
O ArrayList oberflächig durchsuchen Java Basics - Anfänger-Themen 3
M Array nach String durchsuchen und zurückgeben Java Basics - Anfänger-Themen 16
Orkanson Best Practice Array Diagonal durchsuchen Java Basics - Anfänger-Themen 2
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
M CSV Datei durchsuchen Java Basics - Anfänger-Themen 4
M Array nach Zehnen durchsuchen. Java Basics - Anfänger-Themen 25
C String durchsuchen Java Basics - Anfänger-Themen 4
MiMa Lösungsansatz fürText durchsuchen mit Stichwörter Java Basics - Anfänger-Themen 9
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
F Mehrdimensionales Array durchsuchen Java Basics - Anfänger-Themen 8
P Input/Output Arraylist nach String eines Objekts durchsuchen Java Basics - Anfänger-Themen 26
X Probleme beim rekursiven Durchsuchen von Verzeichnissen Java Basics - Anfänger-Themen 1
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
S Zahlen Array durchsuchen Java Basics - Anfänger-Themen 6
F Map nach Werten durchsuchen Java Basics - Anfänger-Themen 3
W Array nach String durchsuchen und Ausgeben Java Basics - Anfänger-Themen 8
O Objekte nach Attributen durchsuchen Java Basics - Anfänger-Themen 10
R 2 mit Arrays bestückte LinkedLists durchsuchen/vergleichen Java Basics - Anfänger-Themen 3
S Array durchsuchen Java Basics - Anfänger-Themen 3
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
I String durchsuchen Java Basics - Anfänger-Themen 2
L Logdatei durchsuchen, Suchstand abspeichern? Java Basics - Anfänger-Themen 9
I ArrayList<EigeneKlasse> durchsuchen Java Basics - Anfänger-Themen 2
K CSV durchsuchen und bearbeiten Java Basics - Anfänger-Themen 1
H String einlesen, in .txt durchsuchen und Ergebnisse ausgeben Java Basics - Anfänger-Themen 22
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
R Erste Schritte API durchsuchen Java Basics - Anfänger-Themen 5
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
J Dynamische Liste durchsuchen + anpassen Java Basics - Anfänger-Themen 3
S Text mit Programm einlesen und durchsuchen Java Basics - Anfänger-Themen 8
O Quellcode nach bestimmter Ausgabe durchsuchen Java Basics - Anfänger-Themen 14
M String nach Zahlen durchsuchen Java Basics - Anfänger-Themen 21
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
F Textfile auslesen und durchsuchen Java Basics - Anfänger-Themen 13
F String durchsuchen Java Basics - Anfänger-Themen 11
L eingegebene Strings nache Eigenschaften durchsuchen. Java Basics - Anfänger-Themen 25
B ArrayList nach Wiederholungen durchsuchen Java Basics - Anfänger-Themen 2
K OOP Objektgefülltes Array nach minWert durchsuchen Java Basics - Anfänger-Themen 5
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
R liste durchsuchen Java Basics - Anfänger-Themen 6
K Klassen String - nach Wort durchsuchen Java Basics - Anfänger-Themen 6
R Verzeichnisse rekursiv nach Dateiduplikaten durchsuchen Java Basics - Anfänger-Themen 5
W Variablen durchsuchen Java Basics - Anfänger-Themen 5
B Zweidimensionales Array durchsuchen und ändern Java Basics - Anfänger-Themen 8
C Strings durchsuchen und umwandeln Java Basics - Anfänger-Themen 4
P String durchsuchen Java Basics - Anfänger-Themen 17
StupidAttack Html Code durchsuchen Java Basics - Anfänger-Themen 2
G Datentypen "Liste" eigener Objekte durchsuchen Java Basics - Anfänger-Themen 6
J geschickter Algorithmus um die 'Umgebung' einer stelle eines Arrays zu durchsuchen Java Basics - Anfänger-Themen 7
S String nach Ausdruck durchsuchen und Folgeattribut ausgeben Java Basics - Anfänger-Themen 3
N OOP Dynamische Objekte und nach Parametern durchsuchen Java Basics - Anfänger-Themen 4
H Datei durchsuchen mit Regex-Ausdruck Java Basics - Anfänger-Themen 14
D schnelles durchsuchen von Dateien Java Basics - Anfänger-Themen 29
R String einlesen, Textdatei danach durchsuchen und aus Zeile Objekt erzeugen Java Basics - Anfänger-Themen 5
O Sämtliche Textdateiformat durchsuchen Java Basics - Anfänger-Themen 2
O Performant große Dateien durchsuchen Java Basics - Anfänger-Themen 8
X regex frage (durchsuchen) Java Basics - Anfänger-Themen 2
N Fragen zu String durchsuchen und verarbeiten Java Basics - Anfänger-Themen 23
N Array durchsuchen Java Basics - Anfänger-Themen 7
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
J ArrayList nach Objekten durchsuchen Java Basics - Anfänger-Themen 2
S Sortierte LinkedList nach Variablen durchsuchen und nicht nach INDEX Java Basics - Anfänger-Themen 6
U ArrayList nach Zahlen durchsuchen? Java Basics - Anfänger-Themen 8
M Eclipse: Durchsuchen aller Dateien? Java Basics - Anfänger-Themen 1
M Ordner der jar Datei herausfinden und Partent durchsuchen Java Basics - Anfänger-Themen 4
A Verzeichnisse nach Datei / Ordner durchsuchen Java Basics - Anfänger-Themen 11
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
hdi Ornderübersicht (durchsuchen) für Öffnen/Speichern Java Basics - Anfänger-Themen 4
B Text nach Signalwörtern durchsuchen Java Basics - Anfänger-Themen 4
G String durchsuchen Java Basics - Anfänger-Themen 4
T treeSet durchsuchen Java Basics - Anfänger-Themen 2
K Bytearray durchsuchen! Java Basics - Anfänger-Themen 6
G String durchsuchen Java Basics - Anfänger-Themen 14
S Arraylist durchsuchen und werte speichern Java Basics - Anfänger-Themen 14
M String durchsuchen Java Basics - Anfänger-Themen 2
T Ordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 2
G array (BigInteger) durchsuchen Java Basics - Anfänger-Themen 2
G ArrayList<String> durchsuchen Java Basics - Anfänger-Themen 8
S Inhalt von Array nach Zahl durchsuchen Java Basics - Anfänger-Themen 5
O Überladene Methode + durchsuchen der ArrayList Java Basics - Anfänger-Themen 14
M Sortierte Liste nach Wert durchsuchen Java Basics - Anfänger-Themen 8
J Hashmap durchsuchen Java Basics - Anfänger-Themen 2
N Unterordner durchsuchen Java Basics - Anfänger-Themen 2
T Datei nach Schlüsselwörtern durchsuchen Java Basics - Anfänger-Themen 7
O Liste durchsuchen Java Basics - Anfänger-Themen 2
M Problem bei String durchsuchen Java Basics - Anfänger-Themen 7
I Dateien durchsuchen Java Basics - Anfänger-Themen 12
P string im ganzen file durchsuchen Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben