Java Einfaches Schreibprogramm

iks-deh

Lt. Commander
Registriert
Jan. 2011
Beiträge
1.325
Hi, ich hoffe ihr könnt mir helfen ^^
Ich sitze hier gerade an einer Übungsaufgabe, aber bekomm es nicht wirklich hin...

Und zwar sollen alle Eingaben von der Tastatur in eine Datei geschrieben werden.
Beenden soll sich das Programm, wenn man in eine Zeile nur "exit" eingibt.

Geht um Streams und so, aber irgendwie blick ich das noch nicht ganz...

Bin für jede Hilfe dankbar ^^
 
keiner macht hier deine hausaufgaben, aber wenn du ein konkretes problem hast, wird dir sicher gerne geholfen.

also zeig erstmal, was du hast und stell präzise deine fragen ;)
 
public static void main(String[] args) throws IOException {

File f = new File("test.txt");
if(!f.exists()) f.createNewFile();
if(f.canWrite()){
FileWriter fw = new FileWriter(f, true);

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

String text = br.readLine();

while(!text.equalsIgnoreCase("exit")){
fw.write(text+"\n");
text = br.readLine();
}
fw.close();
}


}




PS: Es sollte im Interesse des Erstellers dieses Threads sein, diesen Code zu verstehen und nicht einfach herauszukopieren. Keine Gewährleistung für Richtigkeit, habs aber eben selber getestet und funktioniert auf meiner Maschine.
 
Zuletzt bearbeitet:
Also ich habs jetzt selber mal nach noch ein bisschen Lesen und rumprobieren versucht.


import java.io.*;

public class schreiben {

public static void main (String[] args) throws IOException{

InputStreamReader isr_ref = new InputStreamReader(System.in);
BufferedReader br_ref = new BufferedReader(isr_ref);
FileWriter fw_ref = new FileWriter("out.txt");

String s_ref = br_ref.readLine();

while (!s_ref.contains("exit")){
fw_ref.write(s_ref);
}
}
}

Allerdings schreibt mir das nach kürzester Zeit eine mehrere GB große Datei auf die Platte.
Ich nehme an es liegt an der Bedingung der While-Schleife oder?
 
Du liest nur einmal die Eingabe ein. Die Schleife läuft endlos und appended bei jedem Durchlauf deine Eingabe in out.txt.
(readLine() muss in den Schleifenkörper)
 
in der while schleife liest du keine neue zeile ein, sondern imm nur die erste...die wohl kein exit enthält...ergo endloasscshleife
 
vergess nicht das "\n" nach jedem eingelesenen string, sonst schreibt der alles in eine zeile.
 
Alles klar, jetzt funktionierts. Dankeschön :)
 
Zurück
Oben