PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [] byte nach [] char umwandeln in Java?


PHuV
2006-06-13, 11:48:01
ich wechsle gerade von C auf Java und habe echt Probleme, immer von diversen Formaten umzuwechseln.

Nun habe ich ein simples Problem, wo ich eine Datei in einen [] char reinbekomme, sie aber mit dem write nur als [] byte abspeichern kann.

Ich habe etwa so etas

byte[] buffer = new char[BUFFERSIZE];
char[] buffer2 = new char[BUFFERSIZE];

// buffer2 wurde nun gefüllt

outstream = new FileOutputStream(destfile);

// Nun will ich den Mist rausschreiben
// mit write kann ich aber nur den Typ byte verwenden
outstream.write(buffer, 0, toread);


Blöde Frage, wie wandle ich nun den char-Array in ein Byte-Array um?
Als alter C-User würde ich nun eine Schleife machen und jedes char Feld in 2 bytes speichern. In Java geht das doch aber bestimmt raffinierter?

Oder muß ich dann wirklich das char-Array erst in einen String umwandeln und dann wieder in ein byte-Array?

Monger
2006-06-13, 12:11:02
Nun, erst einmal: Ein char ist ein char, und ein byte ist ein byte! :D
Du kannst nicht einfach so annehmen, dass beide das selbe bedeuten. Ein Buchstabe muss je nach Zeichentabelle nicht unbedingt einem oder zwei Byte entsprechen. Deshalb ist die Annahme, dass du ein Char Array in ein Byte Array einfach so umwandeln kannst, ziemlich haarig.

Deshalb musst du dein Char Array erstmal vernünftig decodieren. Deshalb ist ein Umweg über String, StringBuilder o.ä. gar nicht so unvernünftig wie es zu Anfang aussieht.

clm[k1]
2006-06-13, 12:40:01
Warum nimmst du nicht einfach FileWriter statt FileOutputStream?
Damit kannst du auch Strings oder char-arrays schreiben!


clm[k1]

PHuV
2006-06-13, 13:01:00
Dann werde ich das mal so machen, danke.

Shink
2006-06-13, 14:07:40
Genau: Writer/Reader sind für char-Arrays und In/Outputstreams für byte-Arrays. Komm nicht auf die Idee, was anderes auszuprobieren, das kann tricky werden.