Problem beim Einlesen einer Datei in einen String

Lestate

Mitglied
Guten Tag zusammen,

ich weiß jetzt nicht, ob ich hier genau richtig bin, da es sich nicht um ein ganz Grundlegendes Problem handelt, aber iwie schon n Anfängerproblem ist.. naja egal, also folgendes:

Ich möchte mit meinem Java Programm eine Datei einlesen und diese in einem String speichern. Bei der Datei handelt es sich nicht um eine Text-Datei! Heißt also, dass sie aus "wirrwarr" aus Sonderzeichen etc besteht, zB sowas:

Code:
@ÿ2SFT08ÿœFVE5ª†Èº_ÄzÜ0Ž0©Kÿ®LXCÅ8¬”Ï"¹³”U£²!e*|¾vxhê
¨ÉB$ÿÿ’ ’F\~§·^Š"qÇëE€¬ÈKø#cßWû?Fä€^:¼f|E<;LךjÞöuo ÞôO‰1—?ì¬sÆjYböÁL>¬ÄÕù”j…y8é{7ÅÎ뺸[Ò÷!¥ï
øð»Ïƒl $¥~°Þ
‡‹êP©ñf–dÝRg
Œ–Wç86hߟךmz=ŽÃ:çKA¥ÈniM€kÿúø!0×x>™vÀ'C×  É^ïFE”§¡y¼1²vØÇr•Ò
óY»_„×WC7In00	ˆ?óøOÄ“FÑÆ«&Ê¢28±WÝ´!-u…»œö˱ÐJ¿Cï/ðg™]Ïbm*5¯¿Ø•+,évä„–eª+!QˆLÑø
y’Gm·ú³.xI
NJ]C*5ú)ÉŒ¯Ðʼn_«(!*Ãj/ËCCþú7®ªÞJK¸Æ½.‘€íåãÌ™y¾¹}ÕEùUáºr’¦Ûe†$v¸šà=-
úxgÍ(„½ÚwÝEÓ’ZãÊÇ”ÀÃhEU?wûy‡²58º–B\p ›N6•'}~—·¤¾Ê~¡°_žª”"Ž`x«€På˜ÿòD¹¹C‹†7

Wichtig ist nun um die funktionalität der Datei zu erhalten, dass nichts verändert wird, egal ob Zeilenumbrüche oder sonstiges. Vom dem her fallen denke ich Methoden wie "readLine" und ähnliches weg.

Ich hab nun folgendes Probiert:
Java:
File theFile = new File(pathToFile);
char[] cBuffer = new char[(int) theFile.length()];
FileReader reader = new FileReader(theFile);
reader.read(cBuffer, 0, (int) theFile.length());
reader.close();
String fileString = new String(cBuffer);

oder auch:
Java:
File theFile = new File(pathToFile);
byte[] theData = new byte[(int) theFile.length()];
fis.readFully(theData);
fis.close();
String fileString = new String(theData);

beide lesen mir die Datei ein, jedoch verändern sie:

Code:
@ÿ2SFT08ÿœFVE5ª†Èº_ÄzÜ0Ž0©Kÿ®LXCÅ8¬”Ï"¹³”U£²!e*|¾vxhê
¨ÉB$ÿÿ’ ’F\~§·^?Š"qÇëE€¬ÈKø#cßWû?Fä€^:¼f|E<;LךjÞöuo ÞôO‰1—?ì¬sÆjYböÁL>¬ÄÕù”j…y8é{7ÅÎ뺸[Ò÷!¥ï
øð»Ïƒl $¥~°Þ
‡‹êP©ñf–dÝRg
Œ–Wç?86hߟךmz=ŽÃ:çKA¥ÈniM€kÿúø!0×x?>™vÀ'C×  É?^ïFE”§¡y¼1²vØÇr•Ò?
óY»_„×WC7In00	ˆ?óøOÄ“FÑÆ?«&Ê¢28±WÝ´!-u…»œö˱ÐJ¿Cï/ðg™]?Ïbm*5¯¿Ø•?+,évä„–eª+!QˆLÑø
y’Gm·ú³.xI
NJ]C*5ú)ÉŒ¯Ðʼn_«(!*Ãj/ËCCþú7®ªÞJK¸Æ½.‘€íåãÌ™y¾¹}ÕEùUáºr’¦Ûe†$v¸šà=-
úxgÍ(„½ÚwÝEÓ’ZãÊÇ”ÀÃhEU?wûy‡²58º–B\p ›N6•'}~—·¤¾Ê~¡°_žª”"Ž`x«€På˜ÿòD¹¹C‹†7

ich weiß jetzt nicht ob es im codetag richtig dargestellt wird, aber so wie es aussieht, fügt er diverse "?" ein, wo in der original datei noch keine waren..


ich hoffe jmd hat noch einen anderen vorschlag, wie ich es schaffe die datei korrekt einzulesen.

lg Lestate
 
Warum willst du diese Datei in einen String speichern? Was musst/willst du damit machen? Lass sie in einem byte[]. Dann kriegst du auch keine Probleme.
 
FileReader verwendet immer die Standard-Kodierung Plattform auf der du deinen Code
ausführst.
Ich würde vermuten das new InputStreamReader(new FileInputStream(...), <encoding>)
dir eher hilft wenn du den Charset der Datei kennst.
 
Ups wieder mal nur die Hälfte gelesen habe, da er einen String wollte gleich auf
eine Textdatei geschlossen.
Der gute Wille zählt :bahnhof:
 
nein es ist kein text (wie auch im ersten post erwähnt..)

ich will die datei einlesen umd sie anschließend im http header übertragen zu können.. das programm so datein in ein uploadfeld einer homepage eintragen können..

also wenn jmd sonst noch ne idee hat wies geht, auch gerne ohne string, dann immer her damit 😉
 
ich schicke den string mit dem OutputStreamWriter, der kann aber scheids mit dem byte array ned umgehen, der will string bzw int wenn ich mich recht erinner?

anderen writer dann zum übertragen nehmen? welchen?
 
anderen writer dann zum übertragen nehmen? welchen?
Überhaupt keinen - Writer sind für textuelle Daten da; wenn man ihnen Binärdaten vorwirft, kommt immer irgendein Encoding zum Einsatz, welches die Daten verändert.

Also: wenn du nicht - wie von Fart vorgeschlagen - die Binärdaten per Base-64-Encoding zu Text machen willst (was natürlich auf der Empfängerseite dann entsprechend verarbeitet werden muss), dann verwende keinen Writer, sondern direkt einen OutputStream.
 

Neue Themen


Zurück
Oben