FileReader und Filewriter

localhost1

Mitglied
Grüß Euch, frohes Neues erstmal.


Ich "spiele" momentan mit Dateien lesen und schreiben in Java. Bei einigen Projekten macht der Code nicht das was er soll - ohne Fehlermeldung. Sehr nervig, ich komme nicht weiter, konnte das Problem aber isolieren.

Hier an einem Beispiel:
Ich lese eine Datei ein und schreibe diese unverändert wieder. Das funktioniert nicht so wie gedacht


Java:
FileReader in = new FileReader("C:\\test\\testdatei.zip");
		FileWriter out = new FileWriter("C:\\test\\ausgabedatei.zip");

		BufferedReader br = new BufferedReader(in);
		
		String s;
		String end = "";
		while((s = br.readLine()) != null)
		{ 
			end+=s; 
		} 
		br.close();
		
		int length=end.length();
		
		char c[]=new char[length];
		
		for(int i =0;i<length;i++)
		{
			c[i]=end.charAt(i);
			out.write(c[i]);
		}

		out.flush();
		out.close();
		
	}

meinem Verständnis nach sollte die Datei gelesen werden und unverändert wieder ausgespuckt werden.

Ergebnis nach Ausführung:
Meine Testdatei ist 5674 bytes groß. Sie wird gelesen (length wenn ich ausgebe ist auch 5674) und in ausgabedatei geschrieben. Die Ausgabedatei ist 5629 Bytes groß, auch kann ich das zip nicht öffnen um die Textdatei darin auszuspucken.


Mein Problem:

Wieso produziert obiger Code nicht exakt dieselbe Datei wie beim Einlesen?


Vielen Dank!
 
S

SlaterB

Gast
eine byte-Folge darf nie als String eingelesen werden, dabei geht alles kaputt,
warum kann ich wieder einmal nicht erinnern, aber ist ja auch egal,

kein FileReader/Writer, kein BufferedReader, FileInputStream & Co. sind angesagt und byte[] statt Strings,

----

übrigens kann String + Zeile in einer Schleife ganz schön langsam werden falls es eine MB-große tatsächliche Textdatei mit tausenden Zeilen ist,
StringBuilder wäre da immens schneller, aber hier eh auch nicht geeignet
 

localhost1

Mitglied
übrigens kann String + Zeile in einer Schleife ganz schön langsam werden falls es eine MB-große tatsächliche Textdatei mit tausenden Zeilen ist,
StringBuilder wäre da immens schneller, aber hier eh auch nicht geeignet

danke erstmal, ich werds baldigst testen.

Ich habe in der Tat mehrere MB große Dateien zum einlesen, ich habe schon gemerkt dass dieses String+= sehr langsam wird.

Gibts Alternativen?

Ich möchte eine Datei einlesen, möglichst Zeichenweise. Diese Zeichen möchte ich dann wieder schreiben, eventuell vorher noch bearbeiten (Stichwort Ver- und Entschlüsseln)

Wenn es andere Wege als den meinen gibt bin ich offen für Vorschläge
 

localhost1

Mitglied
eine byte-Folge darf nie als String eingelesen werden, dabei geht alles kaputt,
warum kann ich wieder einmal nicht erinnern, aber ist ja auch egal,

ach übrigens: Hab ich im Internet gefunden, ist von 2003 der Beitrag aber wohl immer noch aktuell:

"Ein FileInputStream hat InputStream als Superklasse und liest bytes aus einem File, während FileReader die Superklasse Reader hat und char(acter) aus einem File liest.

Diese Unterscheidung zwichen byte und char ist u.a. auch deswegen nötig, da Java char(acter) als Unicode(=2Byte) und nicht als ASCII-Code(=1Byte) handhabt.Als "Brücke" von byte nach char kann die Klasse InputStreamReader dienen."
 
S

SlaterB

Gast
einen anderen habe ich genannt, findest du überall
Java Copy File Example, Copy File in Java
(wobei erst der dritte Link, die ersten beiden noch mit Reader/ Writer..)

spätestens wenn du auch nach Verschlüsselung suchst dürfte byte-Orientierung überwiegen
Encrypting a File or Stream with DES | Example Depot

zu bytes vs chars wären grundsätzliche Tutorials wie
I/O Streams (The Java™ Tutorials > Essential Classes > Basic I/O)
angesagt

-----

> Ich möchte eine Datei einlesen, möglichst Zeichenweise.
öffne mal ein Zip mit einem Editor, du hast dort byte-Kauderwelsch, keine Zeilen,
überhaupt einen als Zeilenumbruch interpretierten char zu finden, wenn ungünstigerweise in chars umgewandelt, dürfte reine Glückssache sein,

bei bytes gibts keine derartigen Umbrüche, man liest immer konstante Blücke von z.B. 8192 bytes ein, usw.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
Burny91 FileReader / FileWriter / BufferedWriter An einer bestimmten Zeile String ersetzten Java Basics - Anfänger-Themen 2
B Problem mit Filereader und filewriter Java Basics - Anfänger-Themen 20
S Mit FileReader lesen, in ArrayList speichern Java Basics - Anfänger-Themen 4
T filereader , file aus programm einlesen Java Basics - Anfänger-Themen 12
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
L FileReader Java Basics - Anfänger-Themen 7
L FileReader Java Basics - Anfänger-Themen 2
D Hilfe bei FileReader und BufferedReader Java Basics - Anfänger-Themen 2
Y Datei mit relativem Dateipfad per FileReader aus .JAR heraus auslesen Java Basics - Anfänger-Themen 4
A FileReader Problem Java Basics - Anfänger-Themen 14
D JFileChooser & FileReader Java Basics - Anfänger-Themen 4
L Input/Output FileReader Pfadangabe Java Basics - Anfänger-Themen 7
L While-Schleife und filereader Java Basics - Anfänger-Themen 5
F wo datei für filereader ablegen? Java Basics - Anfänger-Themen 11
M FileReader Zeilenangabe Java Basics - Anfänger-Themen 22
L RandomAcessFile getFilePointer in normalen FileReader Java Basics - Anfänger-Themen 4
H OOP FileReader Einleseergebnis Java Basics - Anfänger-Themen 5
R Von wo nimmt der FileReader seine daten Java Basics - Anfänger-Themen 7
J fileReader: wird dateipfad benötigt? Java Basics - Anfänger-Themen 8
Burny91 FileReader und Writer gleichzeitg nutzen Java Basics - Anfänger-Themen 2
F FileReader Frage Java Basics - Anfänger-Themen 3
M Frage zur Klasse FileReader Java Basics - Anfänger-Themen 6
G Character-orientierte File-Streams mit der Klasse FileReader Java Basics - Anfänger-Themen 5
Hamstinator Frage zu BufferedReader/FileReader Java Basics - Anfänger-Themen 4
F FileReader Methode Read() int? Java Basics - Anfänger-Themen 2
calzone FileReader, lesen ohne die Datei zu überschreiben? Java Basics - Anfänger-Themen 3
K FileReader Systempfad Mac Java Basics - Anfänger-Themen 11
hdi FileReader / BufferedReader langsam? Java Basics - Anfänger-Themen 3
A Filereader - An den Anfang des File springen Java Basics - Anfänger-Themen 2
N Pfad und FileReader? Java Basics - Anfänger-Themen 2
S Filereader funktioniert nicht! Fehlersuche Java Basics - Anfänger-Themen 9
K Problem mit .toString und FileReader Java Basics - Anfänger-Themen 2
G filereader Java Basics - Anfänger-Themen 5
G zusätzliche "" bei Pfadangabe z.B. bei FileReader Java Basics - Anfänger-Themen 2
H IOException bei FileReader Java Basics - Anfänger-Themen 3
P BufferedReader / FileReader Key und Values Java Basics - Anfänger-Themen 7
K FileReader BufferedReader & Arrays Java Basics - Anfänger-Themen 14
D Wie funktionieren FileReader Java Basics - Anfänger-Themen 6
M FileReader.read(char[]) - Größe des Arrays? Java Basics - Anfänger-Themen 4
R FileInputStream.read() != FileReader.read(). Pls Help Java Basics - Anfänger-Themen 5
S FileReader-Problem Java Basics - Anfänger-Themen 2
G Textdatei auslesen - Text anfügen - FileReader Java Basics - Anfänger-Themen 18
G FileReader Java Basics - Anfänger-Themen 10
P FileReader Java Basics - Anfänger-Themen 2
V filereader soll aus config.txt pfade lesen Java Basics - Anfänger-Themen 6
A Datei Ein und Ausgabe FileWriter und printWriter Java Basics - Anfänger-Themen 5
O Ausgabe als .txt Datei speichern mit FileWriter Java Basics - Anfänger-Themen 2
B FileWriter nicht sichtbar? Java Basics - Anfänger-Themen 4
D Methoden Filewriter macht keine Zeilenumbrüche Java Basics - Anfänger-Themen 3
D FileWriter schreibt nicht in Datei Java Basics - Anfänger-Themen 14
Z FileWriter erzeugt Symbole Java Basics - Anfänger-Themen 8
C FileWriter bzw. Reader fehlerhaft Java Basics - Anfänger-Themen 6
C FileWriter Problem. Java Basics - Anfänger-Themen 2
M FileWriter Neue Datei wenn aktuelle "zu groß" Java Basics - Anfänger-Themen 3
D Nur aus Interesse: Warum verwendet man FileWriter.flush()? Java Basics - Anfänger-Themen 4
B FileWriter und JFileChooser zusammenfügen Java Basics - Anfänger-Themen 3
B FileWriter close() muss? Java Basics - Anfänger-Themen 8
Java-Insel Methoden FileWriter Methoden funktionieren nicht Java Basics - Anfänger-Themen 20
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
G Effizienzsteigerung von FileWriter als Logging Java Basics - Anfänger-Themen 4
O Datentypen double in string über fileWriter... Java Basics - Anfänger-Themen 7
O OOP fileWriter Dateiname übergeben Java Basics - Anfänger-Themen 12
R Klassen FileWriter und CharSet Java Basics - Anfänger-Themen 4
Luk10 FileWriter Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
O Integer in File mit Filewriter schreiben - geht nicht richtig Java Basics - Anfänger-Themen 4
M Probleme mit FileWriter Java Basics - Anfänger-Themen 7
M FileWriter innerhalb runnable Jar Java Basics - Anfänger-Themen 8
C FileWriter mit einer Variable Java Basics - Anfänger-Themen 8
S FileWriter - in neue Zeile schreiben!? Java Basics - Anfänger-Themen 19
K FileWriter Speicherort Java Basics - Anfänger-Themen 7
T OOP Speichern mit BufferedWriter(FileWriter(File)) Java Basics - Anfänger-Themen 2
S FileWriter Java Basics - Anfänger-Themen 3
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G FileWriter -> neue Zeile Java Basics - Anfänger-Themen 13
F Seltsame Zeichen und kein Zeichenumbruch mit Filewriter Java Basics - Anfänger-Themen 4
G FileWriter Java Basics - Anfänger-Themen 3
G FileWriter Java Basics - Anfänger-Themen 6
T FileWriter Java Basics - Anfänger-Themen 5
M FileWriter Java Basics - Anfänger-Themen 18
J Problem mit FileWriter Java Basics - Anfänger-Themen 24
N Schneller als FileWriter? Java Basics - Anfänger-Themen 28
M FileWriter-Problem Java Basics - Anfänger-Themen 2
P FileWriter schreiben? Java Basics - Anfänger-Themen 4
L Streamklassen, Filewriter und StringBuffer Java Basics - Anfänger-Themen 2
D FileWriter write? Zeilenumbruch ? Java Basics - Anfänger-Themen 4
G Prüfen mit FileWriter Java Basics - Anfänger-Themen 6
N Problem mit FileWriter Java Basics - Anfänger-Themen 2
S FileWriter-Variable nicht initialisiert Java Basics - Anfänger-Themen 3
R FileWriter: Dort wieder anfangen, wo er aufgehört hat Java Basics - Anfänger-Themen 4
S FileWriter funzt nicht :( Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben