Datei einlesen, bearbeiten, ausgeben

Status
Nicht offen für weitere Antworten.

Noar

Bekanntes Mitglied
Hi ich möchte eine Datei einlesen, mehrfach bearbeiten und anschließend in ein neues File schreiben.

Die Datei wird dreischrittig bearbeitet. Dabei ist es für den jeweis folgenden Schritt notwendig, den vorhergehenden komplett zu durchlaufen.

Momentan gehe ich so vor:
Ich lese die Datei jeweils zeilenweise ein, bearbeite sie, schreibe sie in ein neues File.
Anschließend wird sie im nächsten Schritt wieder neu eingelesen.
Dies temporären Zwischenschritte (Files) werden am Ende wieder gelöscht.

Prinzipiell ist das ja ok, allerdings wüsste ich gern, ob ich eine Datei auch einfach in den Speicher einlesen kann und anschließend von dort Zeilenweise mehrfach bearbeiten kann.

Ich würde gern nur das Endergebnis rausschreiben.

Jemand ne Idee?

Gruß
Noar
 

hdi

Top Contributor
Naja du kannst mit einem StringBuilder arbeiten. D.h. du liest die komplette Datei
in einen StringBuilder ein.
Du musst dir halt dann ein paar Dinge per Hand schreiben, zB kannst du auf sowas
kein readLine() o.ä. machen, sondern bräuchtest eine eigene Methode,
die dir die "\n" in dem StringBuilder prüft, um so zu wissen was eine Zeile ist.

Ist halt mehr Arbiet, aber dann kannst du alle 3 Schritte nacheinander auf diesem
Builder machen, und erst wenn alles fertig ist schreibst du den Inhalt davon
in ein File auf die Platte.

Ist nur das, was mir spontan einfällt. Heisst nicht, dass es nicht eine viel bessere
Methode dafür gibt, zB wirklich ein File in den Heap schreiben oder sowas.
 
S

Spacerat

Gast
Ja, man kann die Dateien im Speicher halten. Entweder alles in einem wie hdi sagt oder Zeilenweise mit einem String-Array[highlight=java]void fileWorker(String fileName)
throws IOException {
String[] lines = readFile(new FileReader(fileName));
// Bearbeiten 1
for(String line : lines) {
}
// Bearbeiten 2
for(String line : lines) {
}
// Bearbeiten 3
for(String line : lines) {
}
writeFile(new FileWriter(fileName), lines);
}

String[] readFile(Reader r)
throws IOException {
ArrayList<String> lines = new ArrayList<String>();
BufferedReader br = new BufferedReader(r);
String line;
while((line = br.readLine()) != null) lines.add(line);
br.close();
r.close(); //bin mir nicht sicher, könnte überflüssig sein.
return lines.toArray(new String[lines.length]);
}

void writeFile(Writer w, String[] lines)
throws IOException {
PrintWriter pw = new PrintWriter(w);
for(String line : lines) {
pw.println(line);
}
pw.close();
w.close(); // s.o.
}[/highlight]
@Edit: Wenn ich es mir recht überleg', kann man sogar mit der ArrayList<String> arbeiten. dann kann man nämlich ganz bequem auch ganze Zeilen löschen, vertauchen usw.
 
Zuletzt bearbeitet von einem Moderator:

mvitz

Top Contributor
Mal eine Frage dazu (könnte leicht OT) sein.

Es ist ja auch per Scanner möglich Dateien einzulesen, und dann per scanner.nextLine() auszugeben/bearbeiten etc.

Was ist hier der zu bevorzugende Weg? Gibt es dazu evtl. einfach die "best practice" das per BufferedReader zu machen oder ist er einfach schneller oder, oder, oder?
 
S

Spacerat

Gast
Rein theoretisch sollte alles was "Buffered" ist besser sein als alles was "Cached" ist. <noch mehr offtopic>Lange bevor es "Scanner" gab, habe ich angefangen, mir einen erweiterten "StreamTokenizer" zu entwickeln dem man ausschliesslich "BufferedReader" bzw. "BufferedInputStream" übergeben kann.</noch mehr offtopic>"Scanner" hab' ich deswegen noch nicht verwendet, weil ich mir einfach nicht vorstellen kann, das der Zugriff auf gecachte Objekte, die ja immerhin auch mehr Speicher anfordern, weil sie per "new" instanziert werden, schneller stattfinden kann, als das man mit "mark" und "reset" von "Buffered" den Stream einfach erneut liest.
 
Zuletzt bearbeitet von einem Moderator:

Noar

Bekanntes Mitglied
Hi,

danke für die Hilfe.
Der Tip mit dem ArrayList ist super.

Werde das jetzt mal ausprobieren und schauen, wie es mit der Performance (speziell bei großen Dateien) aussieht.

Gruß
Noar
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
J Java 8 Datei einlesen Allgemeine Java-Themen 1
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K JAVA Datei einlesen Allgemeine Java-Themen 2
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
J Große Datei einlesen und gestückelt verarbeiten Allgemeine Java-Themen 4
Y Property Datei einlesen Allgemeine Java-Themen 2
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
G Datei einlesen: Umlaute sind Fragezeichen Allgemeine Java-Themen 23
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
data89 Datei aus ausführbarer Jar einlesen Allgemeine Java-Themen 2
H Datei (zeilenweise) einlesen Allgemeine Java-Themen 3
D Datei im DOS/ASCII-Format einlesen. Allgemeine Java-Themen 9
D binäre Datei einlesen und schreiben? Allgemeine Java-Themen 3
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
H2SO3- csv Datei mit unterschiedlichen Formatierungen einlesen Allgemeine Java-Themen 15
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
A Ini Datei einlesen Allgemeine Java-Themen 5
MQue Datei einlesen Allgemeine Java-Themen 10
K Datei als HEX oder dezimal gem. ASCII einlesen Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
G Einlesen von Parameterwerten aus einer txt-Datei Allgemeine Java-Themen 2
pikay TXT-Datei in 2-Dimensionales Array Einlesen Allgemeine Java-Themen 8
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
P IOException beim einlesen einer XML- Datei Allgemeine Java-Themen 8
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
S große Datei einlesen! Allgemeine Java-Themen 7
P XML- Datei einlesen Allgemeine Java-Themen 11
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
E Datei rückwärts einlesen Allgemeine Java-Themen 5
B Problem bei Datei einlesen (Applet) Allgemeine Java-Themen 4
G 180 MB CSV-datei einlesen. Problem! Allgemeine Java-Themen 14
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
D CSV Datei einlesen Allgemeine Java-Themen 17
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
R Datei einlesen, Strings hinzufügen, abspeichern Allgemeine Java-Themen 4
K .ini Datei einlesen? Allgemeine Java-Themen 6
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
K .wav Datei einlesen Allgemeine Java-Themen 2
T Tastatureingabe in Datei einlesen Allgemeine Java-Themen 5
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
P Probleme beim Einlesen einer TXT/CSV-Datei aus einem JAR Allgemeine Java-Themen 7
M Datei in String einlesen Allgemeine Java-Themen 3
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
C Datei vollständig einlesen Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben