RandomAccessFile liest nicht alle Zeichen

Laren

Bekanntes Mitglied
Hi,

Ich soll für die Uni ein Programm schreiben, dass per RandomAccessFile Datei liest und speichern kann.
Aber aus irgenteinem Grund hänge ich die ganze Zeit an RandomAccessFile, da es nicht so will, wie ich will🙂

Er gibt nur etwa 50% der Zeichen aus, die im Text enthalten sind. Die Textdatei lautet:

Hallo, dies ist ein Test

und raus bekomme ich(System.out...)

Wo liegt der Fehler?
Der Code hierzu:
Java:
package Blatt1;

import java.io.IOException;
import java.io.RandomAccessFile;

public class aufgabe_b {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		aufgabe_b auf = new aufgabe_b();
		auf.start();

	}

	/**
	 * @throws IOException
	 */
	private void start() throws IOException {
		this.lesen("Test.txt");
	}

	public void lesen(String datei) throws IOException {
		RandomAccessFile f = new RandomAccessFile(datei, "r");
		String ausgabe = new String();
		while (f.read() != -1) {
			ausgabe += ((char) f.read());

		}
		f.close();
		System.out.println(ausgabe);
	}

}
 
Dein Problem ist, dass du zwei Mal [c]f.read()[/c] aufrufst.
Machs irgendwie so:
Java:
char c;
while ((c = (char) f.read()) != -1) {
    ausgabe += c;
}
Da würde ich aber an Stelle eines Strings einen StringBuilder / StringBuffer verwenden.
 
ok, danke.
Deine Version war irgentwie ne Endlosschleife, so funktionierts
Java:
char c = 0;
		while (c!=(char)-1) {
		    c=(char)f.read();
		    ausgabe.append(c);
		}
 
Ah, ein char kann doch gar nie -1 sein. Deine Version ist aber auch unschön (es wär wenn schon eine do-while, aber -1 würde da dann am Schluss immer geschrieben werden). Mach es irgendwie so:
Java:
int value;
while ((value = f.read()) != -1) {
    ausgabe.append((char) value);
}
 

Zurück
Oben