Input/Output Einlesen und bearbeiten einer text Datei / Zeile

MaximilianTM

Mitglied
Hallo Java-Forum Community,

Ich arbeite gerade an einem Programm zum einlesen und bearbeiten von .txt Datein.
Die Funktionen sollen wie folgt sein :
  1. txt Datei einlesen
  2. eingelesene Zeilen nach bestimmtem Zahlencode durchsuchen
  3. Zeile in der die Zahl gefunden wurde soll bearbeitet werden
  4. Aufbau einer Zeile: 0283101Demo123456789012345
  5. 028 = gesamtzahl Zeichen in Zeile / 3101 = Code der gefunden werden soll / Demo123456789012345 = Name der bearbeitet werden soll
  6. Der Name soll nur bearbeitet werden wenn er länger als 15 Zeichen ist, und dementsprechend gekürtzt werden.
  7. Namen auf 15 Zeichen kürzen
  8. Zeilenlänge auslesen und alten Wert am Anfang überschreiben
  9. Geänderte Zeile speichern
  10. Gesamtanzahl der Zeichen der .txt datei auslesen und an den Anfang des Dokuments schreiben
  11. Also müsste die gefundene Zeile nach dem bearbeiten wie folgt aussehen: 0223101Demo12345678901
Mein Code zum einlesen sieht wie folgt aus:
Java:
package Pack;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Reader {
    public static void main(String[] args) throws IOException {
        JFileChooser auswahl = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("TEXT FILES", "txt", "text");

        auswahl.setFileFilter(filter);
        auswahl.setCurrentDirectory(new java.io.File("."));
        int returnVal = auswahl.showOpenDialog(null);
        File datei = auswahl.getSelectedFile(); // Auswahl erfolgt
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            System.out.println(datei.getAbsolutePath()); // Ausgabe des Pfads

            // lesen

            List<String> liste = new ArrayList<>();
            try {
                BufferedReader br = new BufferedReader(new FileReader(datei));
                String zeile;
                while ((zeile = br.readLine()) != null) {
                    liste.add(zeile);
                }
                br.close();
               
            //Hier weiter arbeiten 
               
               
            } catch (IOException ex) {
                ex.printStackTrace();
            }

        } else if (returnVal == JFileChooser.CANCEL_OPTION) {
            System.out.println("Es wurde keine Datei ausgewählt");
        } else if (returnVal == JFileChooser.ERROR_OPTION) {
            System.out.println("ERROR / Keine Berechtigung ?");
        }
    }
}

Nun zu meiner Frage, wie bearbeite Ich die eingelesene Array am besten,
bzw welche Funktion gibt es die ich benutzen kann ?

Kann mir jemand evt ein Fallbeispiel posten, oder einen Link zu einem guten Tutorial bereitstellen ?

Vielen Dank für eure Hilfe

MaximilianTM
 

Robat

Top Contributor
Hast du dich schon mal mit regulären Ausdrücken beschäftigt?
Damit könntest du explizit deine Teilausdrücke Zeichen pro Zeile, Code und Name filtern.
Tutorial für RegEx findest du bspw. hier.
 

MaximilianTM

Mitglied
Robat vielen Dank für die Antwort,

Ich habe mir ein paar Beispiele angeschaut, ich denke das mit der Suche bekomme ich jetzt einigermaßen hin:

in meinem Fall: 3101\w+
Und zum Abspeichern: 3101\w{15}

Jedoch habe ich Probleme den gesuchten Wert aus meiner Liste auszulesen.
Wie kombiniere ich mein neu erlerntes Wissen mit meinem oben angegebenen Code ?

bsp. wenn ich die Zeile ausgeben will in der mein Code "3101" steht:

Code:
                System.out.println(zeile.matches("3101"));

Oder:

Code:
for (int i= 0;i<4;i++){
                System.out.println(zeile[i].matches("3101\\w+"));
    }
wobei ich hier die Fehlermeldung bekomme das ich in einen String auflöse.

Ich denke ich steh auf dem Schlauch

Danke für deine Hilfe.
 

JStein52

Top Contributor
Code:
zeile[i].matches("3101\\w+")
wenn das noch zu dem Code von oben gehört dann ist
Code:
zeile
der String um den es geht nicht
Code:
zeile[i]
 

MaximilianTM

Mitglied
Ok, vielen Dank hab es hinbekommen :)

Bin gestern in der Spalte verrutscht und konnte deshalb den Code nicht richtig ausführen.

Tut mir leid wenn ich wieder nerve,
Wie schreibe Ich die geänderte Zeile mit den anderen Zeilen in eine neue Array die ich ausgeben kann ?

Mit dem Code kann ich meine gewünschte Zeile erstellen:
Code:
 (System.out.println(laenge + newwert);)
Dieser Code erkennt wo die Zeile sich befindet und wenn sie länger als 22 Zeichen ist kürzt sie Sie:
Code:
                    if (zeile.matches("\\d\\d\\d3101\\w+")) {

                        if (zeile.length() > 22) {
                            String zeile2 = new String(zeile.substring(0, 22));
                            int laenge = zeile2.length();
                            String newwert = new String(zeile.substring(3, 22));
                            System.out.println(laenge + newwert);

                        } else if (zeile.length() < 23) {
                            System.out.println("nichts passiert");
                        }
                    }
Im Endeffekt will ich jetzt den alten Text mit meiner neuen Zeile zusammenfügen, welche Optionen/ Möglichkeiten habe ich ?

Und wie lese ich am Ende die Gesamtzahl aller Zeichen aus ?
mit:

zeile.lenght(); gibt er mir nur den wert jeder Zeile untereinander aus.

Vielen Dank für die Hilfe.

MaximilianTM
 

MaximilianTM

Mitglied
Hab es hinbekommen,


Code:
for (int i = 0; i < lines.size(); i++) {

                if (lines.get(i).matches("^\\d{3}3101.*")) {

                    if (lines.get(i).length() > 22) {

                        String zeile2 = new String(lines.get(i).substring(0, 22));
                        int laenge = zeile2.length();
                        String newwert = new String(lines.get(i).substring(3, 22));
                        lines.set(i, laenge + newwert);
                        System.out.println(lines.get(i));
                    } else if (lines.get(i).length() < 23) {

                        System.out.println("nichts passiert");
                    }

                }

Danke, und Ich hoffe ich kann damit noch irgendjemand anderem Helfen

Gruß Maximilian
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Input/Output Text Dateien einlesen, bearbeiten und speichern Java Basics - Anfänger-Themen 9
D csv einlesen, bearbeiten Java Basics - Anfänger-Themen 2
K Txt statt in TextArea in JTable einlesen und bearbeiten können Java Basics - Anfänger-Themen 4
R doc-Datei einlesen und bearbeiten Java Basics - Anfänger-Themen 2
-horn- CSV-file zeilenweise einlesen, was bearbeiten, nächste Zeile Java Basics - Anfänger-Themen 15
1 Daten einlesen und bearbeiten (mehr als 2000 Zeichen) Java Basics - Anfänger-Themen 8
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben