T
Tillus
Gast
Eigentlich eine recht einfache Sache, nur funktioniert es leider nicht so wie ich will:
Beispiel: Mein Programm (eine Art encoder/encrypter - decoder/decrypter) liest irgendeine Datei ein, wird dann nach der Eingabe eines Passworts verschlüsselt und abgespeichert.
Lese ich jetzt diese Datei wieder ein, entschlüssele und speichere sie, erhalte ich eine Datei, die in den meisten Fällen unbrauchbar ist.
Mit Textdateien und ähnlichen funktioniert es wunderbar, nur bei allen anderen Dateien, die in irgendeiner weise "binär" sind, nicht.
Ich habe schon verschiedene Möglichkeiten ausprobiert, die Dateien zu schreiben bzw. zu lesen, z.B. (f ist die zu speichernde/lesende Datei):
Lesen (toncodestringbatch ist der String, in den die Datei gelesen werden soll):
Speichern (tosave ist der zu speichernde String):
Danke schonmal im Voraus
Beispiel: Mein Programm (eine Art encoder/encrypter - decoder/decrypter) liest irgendeine Datei ein, wird dann nach der Eingabe eines Passworts verschlüsselt und abgespeichert.
Lese ich jetzt diese Datei wieder ein, entschlüssele und speichere sie, erhalte ich eine Datei, die in den meisten Fällen unbrauchbar ist.
Mit Textdateien und ähnlichen funktioniert es wunderbar, nur bei allen anderen Dateien, die in irgendeiner weise "binär" sind, nicht.
Ich habe schon verschiedene Möglichkeiten ausprobiert, die Dateien zu schreiben bzw. zu lesen, z.B. (f ist die zu speichernde/lesende Datei):
Lesen (toncodestringbatch ist der String, in den die Datei gelesen werden soll):
Code:
FileReader fr = new FileReader(f);
char[] cbuf = new char[(int)f.length()];
fr.read(cbuf);
toncodestringbatch = new String(cbuf);
Code:
FileInputStream fis = new FileInputStream(f);
FileChannel fc = fis.getChannel();
int sz = (int) fc.size();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
byte[] b = new byte[sz];
bb.get(b);
fc.close();
toncodestringbatch = new String(b)
Code:
byte[] bytes = new byte[(int)f.length()];
RandomAccessFile raf = new RandomAccessFile(f,"r");
raf.readFully(bytes);
raf.close();
toncodestringbatch = new String(bytes);
Speichern (tosave ist der zu speichernde String):
Code:
FileOutputStream fos = new FileOutputStream(f);
int sz = ndcode.length();
byte[] b = new byte[sz];
b = tosave.getBytes();
fos.write(b);
fos.flush();
fos.close();
Code:
RandomAccessFile raf = new RandomAccessFile(f,"rw");
raf.writeBytes(tosave);
raf.close();
Danke schonmal im Voraus