BenutzerDaten teilweise ändern in txt Datei

Grazzle

Mitglied
Schönen guten Morgen,
ich speichere für einen Login Prozess in einem Stundenplaner UserDaten in einer .txt Datei ab. Ich gebe auch die Möglichkeiten diese zu ändern, jedoch habe ich das Problem, dass ich, wenn ich möchte, dass nur ein Teil der Daten geändert werden möchte, die restlichen aus der Txt Datei einfach rausgelöscht werden, anstatt das sie den alten Wert behalten. Wie kann ich das ändern?

Hier der relevante Code
Java:
public static void bearbeitenBenutzer(String userName, String[] daten)
        throws IOException {

        ArrayList<String> userDaten = new ArrayList<String>();

        String inhaltVonDatei;
        int arrayGroesse;

        String passwort = daten[0];
        String studiengang = daten[1];
        String ects = daten[2];

        File datei = new File(userName + ".txt");

        BufferedReader read = new BufferedReader(new FileReader(datei));

        while ((inhaltVonDatei = read.readLine()) != null) {
            userDaten.add(inhaltVonDatei);
        }

        userDaten.set(1, passwort);
        userDaten.set(2, studiengang);
        userDaten.set(3, ects);

        arrayGroesse = userDaten.size();

        // true damit der Text angehängt wird, false(oder ohne)
        // wird die Datei komplett überschrieben
        FileWriter write = new FileWriter(userName 
            + ".txt", false);

        for (int a = 0; a < arrayGroesse; a++) {
            write.write(userDaten.get(a));
            write.append(System.getProperty("line.separator"));
        }

        read.close();
        write.close();
    }

und in dem GUI fenster
Java:
btnSpeichern.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                String[] daten = new String[4];
                daten[0] = txtNeuPasswort.getText();
                daten[1] = txtNeuStudiengang.getText();
                daten[2] = txtNeuECTS.getText();
                daten[3] = txtNeuPasswortNochmal.getText();
                AktuelleSitzung.
                        getBenutzer();
                    try {
                        UserVerwaltung.bearbeitenBenutzer(
                                    Benutzer.getUserName(), daten);
                    } catch (IOException exc) {
                        // TODO Auto-generated catch block
                        exc.printStackTrace();
                    }
                    AktuelleSitzung.getAktuelleSitzung();
                    if (!daten[1].isEmpty()) {
                        AktuelleSitzung.getBenutzer().setStudiengang(daten[1]);
                    } 
                    if (!daten[2].isEmpty()) {
                        AktuelleSitzung.getBenutzer().setEcts(daten[2]);    
                    }
                   
                    if (!daten[0].isEmpty() && !daten[3].isEmpty() 
                        && daten[0].equals(daten[3])) { 
                    AktuelleSitzung.getBenutzer().setPasswort(daten[0]);
                    }
                    dispose();
            }        
        });
 

JStein52

Top Contributor
Zeile 0 sollte das Passwort sein, Zeile 1 der Studiengang, Zeile 3 ects ?? Auf jeden Fall liest du es mit dieser Erwartung ein. Und dann schreibst du in eine Zeile Passwort, Studiengang und ects, und danach noch evtl. andere Daten und dann einen Zeilenvorschub ?!

Edit: Sorry habe gerade gesehen alles um eins verschoben, also 1, 2 und 3
 

JStein52

Top Contributor
d.h. er hat für passwort und ects nur eine Leerzeile geschrieben. Hast du dir mal angeschaut was in
Code:
daten[0], daten[1], daten[2]
drin steht ?
 

Grazzle

Mitglied
Java:
daten[0] = txtNeuPasswort.getText();
                daten[1] = txtNeuStudiengang.getText();
                daten[2] = txtNeuECTS.getText();
                daten[3] = txtNeuPasswortNochmal.getText();


Ja, ich bin davon ausgegangen, dass durch die if-Abfrage sich der Code in den nicht beschriebenen Zeilen nicht verändert und gleich bleibt...ja das naive denken eines unerfahrenen Programmierers :D
 

Grazzle

Mitglied
Er erhaelt am anfang der Methode den Text aus dem Array, aber ich dachte, dass durch die IfAbfrage, der gar nicht erst neu beschrieben wird, wenn in den Zeilen nichts drin steht... Also schätze ich nein :/
 

Grazzle

Mitglied
Mittlerweile hab ich immerhin festgestellt, dass der Fehler in der Klasse UserVerwaltung liegt, sprich bei
Java:
public static void bearbeitenBenutzer(String userName, String[] daten)
        throws IOException {

        ArrayList<String> userDaten = new ArrayList<String>();

        String inhaltVonDatei;
        int arrayGroesse;

        String passwort = daten[0];
        String studiengang = daten[1];
        String ects = daten[2];

        File datei = new File(userName + ".txt");

        BufferedReader read = new BufferedReader(new FileReader(datei));

        while ((inhaltVonDatei = read.readLine()) != null) {
            userDaten.add(inhaltVonDatei);
        }

        userDaten.set(1, passwort);
        userDaten.set(2, studiengang);
        userDaten.set(3, ects);

        arrayGroesse = userDaten.size();

        // true damit der Text angehängt wird, false(oder ohne)
        // wird die Datei komplett überschrieben
        FileWriter write = new FileWriter(userName + ".txt", false);

        for (int a = 0; a < arrayGroesse; a++) {
            write.write(userDaten.get(a));
            write.append(System.getProperty("line.separator"));
        }

        read.close();
        write.close();
    }

Ich würde behaupten bei dem part
Java:
        userDaten.set(1, passwort);
        userDaten.set(2, studiengang);
        userDaten.set(3, ects);

aber ich hab keine wirkliche idee, wie ich das fixen könnte.
 

JStein52

Top Contributor
Vielleicht so:
Code:
if (!"".equals(passwort) {
    userDaten.set(1, passwort);
}
if (!"".equals(studiengang) {
    userDaten.set(2, studiengang);
}
if (!"".equals(ects) {
    userDaten.set(3, ects);
}
 

mrBrown

Super-Moderator
Mitarbeiter
Nur grob überflogen, aber warum benutzt du static und warum hast du kein Objekt für die Benutzerdaten? Das dürfte das deutlich weniger Fehleranfällig machen...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Benutzerdaten währen Laufzeit speichern Java Basics - Anfänger-Themen 2
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
MiMa Methoden Methoden teilweise nicht gefunden? Java Basics - Anfänger-Themen 9
N Input/Output Einlesen funktioniert nur teilweise Java Basics - Anfänger-Themen 2
W Eclipse auf Linux langsam und stürzt teilweise ab Java Basics - Anfänger-Themen 2
C Graphics2D - DrawRect - Warum Linien teilweise gefüllt? Java Basics - Anfänger-Themen 12
E Methode sehr langsam und funktioniert teilweise nicht Java Basics - Anfänger-Themen 3
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
H GPS über ser. Schnittst. liefert teilweise Sonderzeichen Java Basics - Anfänger-Themen 3
S Paint Teilweise Zeitverzögert Java Basics - Anfänger-Themen 6
T Arrays teilweise verändern Java Basics - Anfänger-Themen 6
C String soll auf gleichheit (=teilweise) überprüft Java Basics - Anfänger-Themen 5
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
W Methode ändern Java Basics - Anfänger-Themen 65
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
B Filepath "ändern"? Java Basics - Anfänger-Themen 5
t2im Java Array-Länge ändern? Java Basics - Anfänger-Themen 22
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
P Standard resources-Verzeichnis ändern Java Basics - Anfänger-Themen 9
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
J Itext-Paragraph Position ändern Java Basics - Anfänger-Themen 13
Z Attribut ändern ohne Kontrollstruktur Java Basics - Anfänger-Themen 2
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
V Umgebungsvariable Genutzte Javaversion in der Konsole ändern Java Basics - Anfänger-Themen 5
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
W Eclipse Autoformatierung für Streams ändern ? Java Basics - Anfänger-Themen 1
M Programm per Nutzereingabe ändern Java Basics - Anfänger-Themen 3
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
L Java Date Format ändern Java Basics - Anfänger-Themen 5
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
F Schriftgröße ändern Java Basics - Anfänger-Themen 2
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
J Kapselung Array in Set ändern und in Main ausgeben lassen Java Basics - Anfänger-Themen 4
D scheduledAtFixedRate speed ändern Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
krgewb Icon von JButton ändern Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
Henri Erste Schritte Iteration ändern Java Basics - Anfänger-Themen 12
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Cursor ändern Java Basics - Anfänger-Themen 8
B Eclipse Tabellen Farbe ändern? Java Basics - Anfänger-Themen 2
I Ordnung JLayeredPane mit Button ändern Java Basics - Anfänger-Themen 5
S Array Eintrag ändern Java Basics - Anfänger-Themen 6
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
M im String Alphabet ändern Java Basics - Anfänger-Themen 3
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
Jinnai4 Werte in Textdatei ändern Java Basics - Anfänger-Themen 2
S Bestehendes Java Programm, einen festen Wert ändern Java Basics - Anfänger-Themen 17
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
T Parameter das übergeben wurde ändern? Java Basics - Anfänger-Themen 1
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
Hijo2006 Eclipse: Java Icon ändern Java Basics - Anfänger-Themen 9
S Schriftart/Farbe im Grafikfenster ändern Java Basics - Anfänger-Themen 8
J Button in anderer Klasse ändern Java Basics - Anfänger-Themen 3
E Hash map Value Wert hochzuholen/ändern Java Basics - Anfänger-Themen 7
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
R Vererbung Variable in einem übergeordneten Objekt ändern Java Basics - Anfänger-Themen 4
R JTextArea final Status ändern Java Basics - Anfänger-Themen 11
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
J Klassen Klassenmethode um Variable zu ändern Java Basics - Anfänger-Themen 7
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
D Eigenschaften eines Objektes ändern Java Basics - Anfänger-Themen 1
D Opencsv-3.5 DEFAULT_DATE_FORMAT ändern Java Basics - Anfänger-Themen 8
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
G Bei Mouseover Grafik ändern, gutes Vorgehen gesucht Java Basics - Anfänger-Themen 0
U Tabelle ändern und die Inhalte speichern Java Basics - Anfänger-Themen 9
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
Z JLabel Icon ändern Java Basics - Anfänger-Themen 2
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
N Variablen ändern wenn eine andere geändert wird Java Basics - Anfänger-Themen 7
U Farbe meines Würfels jede sekunde ändern! Java Basics - Anfänger-Themen 5
I JTree, Root-Name ändern Java Basics - Anfänger-Themen 4
Z System(einstellungen) per Java ändern/Steuern | Betriebssystembezogen Java Basics - Anfänger-Themen 7
W Klassen Variable einer anderen Klasse ändern (Threads) Java Basics - Anfänger-Themen 3
E Systemzeit ändern Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben