Forum: PC-Programmierung Char Array in Datei Speichern


von Stephan H. (stiph5)


Lesenswert?

Hallo Leute,
habe folgendes Problem und hoffe es kann mir jemand weiter helfen:

Ich programmiere ein Programm in Java um Texte zu verschlüsseln, dabei 
wird eine .txt Datei eingelesen, verschlüsselt und in einen neue .txt 
gespeichert. Als Verschlüsselung verwende ich einen einfachen XOR Key. 
Das Einlesen bzw das Speichern der Datei mache ich mit der Klasse 
FileReader, FileWriter.Das ganze funktioniert schon ganz gut solange der 
Schlüssel kleiner 127 ist und im Text keine Sonderzeichen enthalten 
sind. Wenn ich jedoch ein Sonderzeichen verschlüssle (bsp €) dann 
entsteht daraus ein von Java nicht erkannter Unicode Wert (das vermute 
ich zumindest) und dieser Wert wird dann als ein '?' gespeichert, was 
beim erneuten entschlüsseln natürlich ein Problem aufwirft da dieses 
einen anderen Wert liefert als das verschlüsselte € Zeichen.

Ich suche jetzt schon seit 3 Tagen nach einer Lößung um die 
verschlüsselten Daten zu speichern. Leider erbrachter auch der 
BufferdWriter oder PrintWriter wenig Erfolg.

Hier mein Code zum speichern:
1
public void WriteFile(String fileName){
2
    FileWriter fw;
3
    try{
4
      fw = new FileWriter(fileName);
5
      fw.write(bytes,0,bytes.length);
6
      fw.close();
7
      
8
  }catch(FileNotFoundException e){
9
      System.err.println("error File not found:"+fileName);
10
  }catch(IOException e){
11
    System.err.println("error Lesen aus "+fileName+" nicht möglich");
12
  }

Hat von euch jemand eine Idee?

Vielen Dank Stephan

von bluppdidupp (Gast)


Lesenswert?

Ich würde den Text ja vorher in ein byte-Array wandeln und erst darauf 
die Verschlüsselung anwenden und dann z.B. mit FileOutputStream 
speichern.
Ich könnte mir zumindest vorstellen, dass das ein Zeichensatz-Problem 
ist.

von Stephan H. (stiph5)


Lesenswert?

Vielen Dank für dein Antwort!
Du hattest recht, es war ein Zeichensatz-Problem, die Lösung des Ganzen 
sieht wie folgt aus:
1
br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF8"));
1
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF8"));

und somit speichert und ließt der BufferdWriter/Reader keine '?' mehr 
sondern die vollen UTF8 Codes :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.