Tach zusammen!
Ich hab ein seltsames Problem. Ich will ein File byteweise manipulieren, dazu lese ich es erstmal mit einem BufferedReader aus. Hier tritt auch schon das Problem auf.
Im Hex-Editor steht an entsprechender Stelle eine 0x81 (dezimal 129). Wenn ich das mit dem Bytereader aber in einen char[] Array lese und dies ausgeben lasse, bekomme ich eine 0xFFFD (dezimal 65533). Wie das gehen soll, erschließt sich mir nicht so ganz, ein char hat doch nur 2 byte...
Mein Test.txt File sieht im Hexeditor so aus:
Die Ausgabe:
Das ist für mich ein Rätsel.
Das einzig auffallende ist, dass 0x81 eben kein darstellbares Zeichen repräsentiert. Aber das sollte dem reader doch eigentlich egal sein.
Wenn ich das ganze mit reader.read() auslese, bekomme ich übrigens genau das gleiche.
Hat jemand ne Idee?
Ich hab ein seltsames Problem. Ich will ein File byteweise manipulieren, dazu lese ich es erstmal mit einem BufferedReader aus. Hier tritt auch schon das Problem auf.
Im Hex-Editor steht an entsprechender Stelle eine 0x81 (dezimal 129). Wenn ich das mit dem Bytereader aber in einen char[] Array lese und dies ausgeben lasse, bekomme ich eine 0xFFFD (dezimal 65533). Wie das gehen soll, erschließt sich mir nicht so ganz, ein char hat doch nur 2 byte...
Mein Test.txt File sieht im Hexeditor so aus:
Code:
0: 81 48 45 4c 4c 4f fe | HELLOþ
Code:
public static void main(String[] args) throws IOException{
File file = new File("Test.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
char[] cbuf = new char[(int)file.length()];
reader.read(cbuf);
for (int i = 0; i < cbuf.length; i++){
System.out.print(Integer.toHexString((int)cbuf[i]) + " ");
}
}
Die Ausgabe:
Code:
fffd 48 45 4c 4c 4f fe
Das ist für mich ein Rätsel.
Das einzig auffallende ist, dass 0x81 eben kein darstellbares Zeichen repräsentiert. Aber das sollte dem reader doch eigentlich egal sein.
Wenn ich das ganze mit reader.read() auslese, bekomme ich übrigens genau das gleiche.
Hat jemand ne Idee?