Input/Output Stringbuffer Befehle bei Konvertierung in String

DieKey

Mitglied
Hey Leute!

Ich möchte ein Programm schreiben, dass Text Zeilenweise aus einem Programm ausliest und den ganzen Text MIT Zeilenumbrüchen auf einen String speichert. Bisher habe ich folgendes:

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

		StringBuffer stringbuffer = new StringBuffer();
		String wert = " ";
		String eingabe = null;
		try {

			File input = new File("U:\\test.txt");
			FileReader in = new FileReader(input);
			BufferedReader bufferreader = new BufferedReader(in);

			while (wert != null) {
				wert = bufferreader.readLine();

				stringbuffer.append(wert + "/n");

			}
			bufferreader.close();

		}

		catch (IOException ioex) {
			ioex.printStackTrace();
		}
		
		eingabe = stringbuffer.toString();
		System.out.println(eingabe);
		

	}
Ausgabe:
Hallo Welt/n/nda draußen/nnull/n


Eigentlich müssten doch jetzt die "\n" zu Zeilenumbrüchen ungewandelt werden, oder? Ich schätze das hat was mit der Konvertierung zu tun, so das er die Befehle nicht erkennt.

Aber wie kriege ich das jetzt hin, das er mir hinterher die zeilenumbrüche da hin macht?

Ich hoffe ihr versteht mein problem und könnt helfen!

LG
DieKey
 
Zuletzt bearbeitet von einem Moderator:
In Zeile 15 steht aber
Code:
stringbuffer.append(wert + "/n");
und nicht
Code:
stringbuffer.append(wert + "[B]\[/B]n");
(Backslash)
 
Ihr seit geil *__* ;P

Danke... Habe ich garnicht bemerkt.. Das scheint der Fehler gewesen zu sein!

Aber jetzt kommt zum Schluss in der Ausgabe zum Schluss noch "null" also (nall) dazu... Warum??
 
Du solltest die Schleife vlcht. fußgesteuert machen, also BIS eine null-Zeile auftaucht. Aktuell prüfst du zwar, ob die letzte Zeile "null" lieferte, liest dann aber die nächste (falls dies nicht zutraf) ein, welche ja null sein könnte und hängst sie an den Buffer an.

EDIT: Oder noch besser:
Java:
while (wert = buffer.readLine() != null) {...}
 
Weil die while-Schleife erst aufhört, wenn "wert" null ist und du aber das append trotzdem noch mal ausführst. Die Überprüfung auf den neuen Wert von "wert" findet immer erst nach dem Durchlauf statt.
 
Java:
StringBuffer stringbuffer = new StringBuffer();
		String wert = " ";
		String eingabe = null;
		try {

			File input = new File("U:\\test.txt");
			FileReader in = new FileReader(input);
			BufferedReader bufferreader = new BufferedReader(in);

			while (bufferreader.readLine() != null ) {
				wert = bufferreader.readLine();

				stringbuffer.append(wert + "/leerzeile");
				System.out.println(stringbuffer);
			}
			bufferreader.close();

		}

		catch (IOException ioex) {
			ioex.printStackTrace();
		}

		eingabe = stringbuffer.toString().replaceAll("/leerzeile", "\n");

		System.out.println(eingabe);
 
Dann mach am besten mal die Zuweisung für den String wert so, wie HimBromBeere oben gepostet hat, ist mir grad total durch die Lappen gegange.
Wieso machst du dir das mit den Zeilenumbrüchen so schwer?
 
habs jetzt!

Danke vielmals!

PS:
Habe aber noch ne frage... Bei mir gibt es keinen Danke- Botton... Hilfe? 😀


nx77vsdl_jpg.htm
 
Der Vollständigkeit halber: [JAPI]StringBuffer[/JAPI] ist die ältere, aber threadsichere Variante des [JAPI]StringBuilder[/JAPI], der etwas effizienter ist. Diesen solltest du hier nutzen. Die Methoden sind nahezu die gleichen.
 
Java:
while ((wert = bufferreader.readLine()) != null ) {
  stringbuffer.append(wert + "/leerzeile");
}
Stringkonkatenation in Schleifen ist schlecht, besonders, wenn man sowieso einen Stringbuffer hat:

Java:
while ((wert = bufferreader.readLine()) != null ) {
  stringbuffer.append(wert);
  stringbuffer.append("/leerzeile");
}
 

Neue Themen


Zurück
Oben