Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe)

Johnmar

Neues Mitglied
Hallo,
mit dem folgeneden Problem benötige ich eure Hilfe:
Mein folgender Code ist dafür da, eine Datei zu öffnen bzw. zu erstellen und Eingaben der Benutzer in der Konsole hinzufügen und zu speichern.


package dateizugriffe;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;

public class AddAndSave {
private static Scanner scanner = new Scanner(System.in);

private static Formatter formatter = null;

private static Scanner reader;

public static void main(String args[]) {

System.out.println("In which file do you want to add?");
String fileName = scanner.next();
File myFile = new File("C://Meine Dateien// " + fileName + ".txt");

if (myFile.exists() == true) {
try {
reader = new Scanner(myFile);
String fileContent = "";

while (reader.hasNext() == true) {
fileContent = fileContent + reader.next();
}
formatter = new Formatter(myFile);
formatter.format("%s", fileContent + " ");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
try {
formatter = new Formatter(myFile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
System.out.println("What do you want to add?");
String newInput = "" + scanner.next();


formatter.format("%s", newInput);
System.out.println();
System.out.println("Finish! Thank you for using our programm!");
formatter.close();
}
}



Und genau hier bräuchte ich eure Hilfe:

String newInput = "" + scanner.next();

formatter.format("%s", newInput);
System.out.println();
System.out.println("Finish! Thank you for using our programm!");
formatter.close();


Wenn der Benutzer zwei Eingaben schreibt, wird trotzdem nur eine gespeichert. Das liegt soweit ich weiß daran, da die nur eine Zeile ( scanner.next()) gespeichert wird und die Leertaste als neue Zeile interpretiert wird.
Ich komme leider nicht voran, den Code zu erweitern, sodass alles gespeichert wird, was der Benutzer eingibt.
Habt ihr Lösungsvorschläge wie man das hinbekommt?

Vielen Dank im Voraus!
 

mihe7

Top Contributor
Bitte in Zukunft Deinen Code formatiert mit Code-Tags posten. Dazu fügst Du im Editor [code=Java]Dein Code[/code] ein, das liefert dann:
Java:
package dateizugriffe;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;

public class AddAndSave {
    private static Scanner scanner = new Scanner(System.in);

    private static Formatter formatter = null;

    private static Scanner reader;

    public static void main(String args[]) {

        System.out.println("In which file do you want to add?");
        String fileName = scanner.next();
        File myFile = new File("C://Meine Dateien// " + fileName + ".txt");

        if (myFile.exists() == true) {
            try {
                reader = new Scanner(myFile);
                String fileContent = "";

                while (reader.hasNext() == true) {
                    fileContent = fileContent + reader.next();
                }
                formatter = new Formatter(myFile);
                formatter.format("%s", fileContent + " ");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            try {
                formatter = new Formatter(myFile);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println("What do you want to add?");
        String newInput = "" + scanner.next();


        formatter.format("%s", newInput);
        System.out.println();
        System.out.println("Finish! Thank you for using our programm!");
        formatter.close();
    }
}

Dann ein paar Anmerkungen zu Deinem Code:
1. verwende, gerade als Anfänger, das Schlüsselwort static nur für die main-Methode und für Konstanten (final static).
2. Boolesche Ausdrücke nicht nochmal auf true/false prüfen. Beispielsweise liefert myFile.exists() true oder false. if (myFile.exists() == true) ist doppelt gemoppelt, if (myFile.exists()) reicht. Das selbe gilt natürlich auch bei while.
3. Du musst nicht erst die komplette Datei einlesen und neu schreiben, um etwas anfügen zu können.

Jetzt zu Deiner Frage: Du kannst reader.nextLine() verwenden, um eine ganze Zeile zu lesen.
 

mihe7

Top Contributor
Hier mal ein Beispiel:

Java:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Formatter;
import java.util.Scanner;

public class AddAndSave {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("In which file do you want to add?");
        String fileName = scanner.next();
        scanner.nextLine(); // Rest der Zeile verwerfen
        File myFile = new File("C://Meine Dateien// " + fileName + ".txt");

        try(FileWriter writer = new FileWriter(myFile, true);
                Formatter formatter = new Formatter(writer)) {
            System.out.println("What do you want to add?");
            String newInput = scanner.nextLine();
            formatter.format("%s\n", newInput);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println();
        System.out.println("Finish! Thank you for using our programm!");
    }
}
Dem FileWriter kann man neben dem Dateinamen ein boolesches Argument mitgeben, das angibt, ob man an die Datei anfügen möchte.

Dieses try-Konstrukt nennt sich try-with-resources, wobei die in den Klammern deklarierten Ressourcen nach dem try-Block automatisch geschlossen werden (s. https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html).

Das \n im Format sorgt für das Einfügen eines Zeilenumbruchs. Wird das Programm mehrfach ausgeführt, befindet sich jede Eingabe in einer eigenen Zeile in der Datei. Probier aus, was passiert, wenn Du das \n weglässt und das Programm öfter ausführst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
J Per I/O Streams in LinkedList oder ArrayList schreiben/lesen Java Basics - Anfänger-Themen 6
A XML schreiben - lesen Java Basics - Anfänger-Themen 19
E txt Datei schreiben und lesen Java Basics - Anfänger-Themen 9
H Zeile aus Textdatei lesen und in Textfield schreiben Java Basics - Anfänger-Themen 4
D Textfile lesen/schreiben abhängig vom inhalt Java Basics - Anfänger-Themen 6
S Lesen und Schreiben von Dateien in Java Java Basics - Anfänger-Themen 11
F Unicode beim Lesen und Schreiben per java.io.* Java Basics - Anfänger-Themen 9
A Datei Lesen und Schreiben in gleichen Klasse Java Basics - Anfänger-Themen 3
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
J Problem mit Datei lesen und schreiben Java Basics - Anfänger-Themen 8
M Datei Lesen Und Schreiben! -.- Java Basics - Anfänger-Themen 7
C Ist gleichzeitiges Lesen und Schreiben einer ArrayList möglich Java Basics - Anfänger-Themen 2
R Daten aus Datenbank lesen, verarbeiten und schreiben. Java Basics - Anfänger-Themen 1
R Sequentielle Datei lesen und schreiben Java Basics - Anfänger-Themen 5
V Performance Lesen und Schreiben aus/in Streams Java Basics - Anfänger-Themen 4
mwildam Textfile lesen und schreiben - so viele Möglichkeiten Java Basics - Anfänger-Themen 5
C lesen und schreiben Java Basics - Anfänger-Themen 24
M Textboxen lesen und schreiben! Java Basics - Anfänger-Themen 3
M Dateien lesen/schreiben und Heap Space Probleme Java Basics - Anfänger-Themen 8
T gezieltes lesen/schreiben in datei Java Basics - Anfänger-Themen 9
M lesen und schreiben aus Programm Java Basics - Anfänger-Themen 6
H Datei lesen und an bestimmter Stelle schreiben Java Basics - Anfänger-Themen 4
I Bits lesen und schreiben Java Basics - Anfänger-Themen 6
J Datei-Details /-Infos wie Kommentare, Autor lesen/schreiben Java Basics - Anfänger-Themen 2
B Datei lesen und schreiben Java Basics - Anfänger-Themen 2
R Datei erzeugen schreiben und lesen ? Java Basics - Anfänger-Themen 18
S Textdatei lesen und schreiben Java Basics - Anfänger-Themen 2
N Mehrzeilig aus Datein lesen und schreiben Java Basics - Anfänger-Themen 8
M Linked List schreiben und lesen Java Basics - Anfänger-Themen 4
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
W Timestamp lesen Java Basics - Anfänger-Themen 6
F MS365 Kalender lesen Java Basics - Anfänger-Themen 5
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
C Fehlermeldungen lesen Java Basics - Anfänger-Themen 2
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
T Klassen Den Wert aus Array lesen lassen Java Basics - Anfänger-Themen 12
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
G Excle datei aus resources folder finden und lesen Java Basics - Anfänger-Themen 5
J Datei aus Projektfolder lesen Java Basics - Anfänger-Themen 12
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
S Tastatur input lesen Java Basics - Anfänger-Themen 7
S Mit FileReader lesen, in ArrayList speichern Java Basics - Anfänger-Themen 4
B Aus Datei lesen Java Basics - Anfänger-Themen 23
B Aus Datei lesen Java Basics - Anfänger-Themen 0
deatzi Wert aus anderer Klasse lesen Java Basics - Anfänger-Themen 7
W Wie lasse ich meine Ausgabe nach dem Lesen verschwinden ? Java Basics - Anfänger-Themen 1
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
C Input/Output Datei aus Startverzeichnis lesen Java Basics - Anfänger-Themen 6
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
S BufferedReader nächste Zeile lesen Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
G Jar-Archiv zum Lesen einer Konfigurationsdatei Java Basics - Anfänger-Themen 9
MaxG. Input/Output Datei lesen Java Basics - Anfänger-Themen 3
Hacer Quellcode lesen Java Basics - Anfänger-Themen 13
H Aus wav-datei lesen und in neue wav-datei speichern Java Basics - Anfänger-Themen 10
N Lesen eines files mit FILES.lines Java Basics - Anfänger-Themen 11
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
R Ab einer bestimmten Zeile lesen Java Basics - Anfänger-Themen 3
P vokale konsonanten ziffern satzzeichen aus string lesen. hab kiene ahnung Java Basics - Anfänger-Themen 10
A textfeldwerte aus array lesen Java Basics - Anfänger-Themen 27
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
D Methoden Array aus Datei lesen und weitergeben? Java Basics - Anfänger-Themen 7
T 'Nix' aus Textdokument lesen Java Basics - Anfänger-Themen 11
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
E lesen csv file column by column Java Basics - Anfänger-Themen 10
G Bis zu einem bestimmten Punkt aus Datei lesen Java Basics - Anfänger-Themen 2
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
E Input/Output Property-Datei aus einer Zip lesen in in einer anderen Zip-Datei ist Java Basics - Anfänger-Themen 3
B Input/Output Scanner-Probleme bei String-Lesen Java Basics - Anfänger-Themen 3
I Properties oder Umgebungsvariablen mit ${irgendwas} lesen? Java Basics - Anfänger-Themen 2
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
G Zeile charweise lesen Java Basics - Anfänger-Themen 3
J Aus Datei lesen und ausgeben Java Basics - Anfänger-Themen 4
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
G Datei zeilenweise lesen Java Basics - Anfänger-Themen 19
M Wie sämtliche Schlüssel und Attibutwerte aus einer Propertie Datei lesen? Java Basics - Anfänger-Themen 3
S Compiler-Fehler jOpenDocument Kompelierfehler - ODS Datei lesen Java Basics - Anfänger-Themen 2
C Aus einer Textdatei Zahlen lesen mit Leerzeichen Java Basics - Anfänger-Themen 11
T BufferReader soll datei mehrmals lesen Java Basics - Anfänger-Themen 13
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
S Datei aus JAR lesen. Java Basics - Anfänger-Themen 9
G Zeilenweise lesen Java Basics - Anfänger-Themen 17
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben