1

私のJavaプログラムには、String値のみを使用し、binaryデータを使用しないメッセージングクラスがあります。

ファイルを送信したいrpmので、基本的にbinaryこのメッセージング クラスを介してreceiver.

binaryこれは、データを最後に に変換Stringし、最後にファイルにmessaging戻すことで実行できることを知っています。binaryreceiving

ただし、私の質問は、binaryファイルを に変換しStringbinary dataからファイルとして保存するまでの間にデータが失われるbinaryか、またはすべての変換でデータが保持されるかということです。

4

1 に答える 1

1

バイナリデータとはbyte[], InputStream, OutputStream. また、Java は内部的にテキストに Unicode を使用します: String, char, Reader, Writer.

したがって、テキストを表すバイナリ データのみを変換し、そのバイナリ データのエンコーディングも指定する必要があります。

byte[] bytes = ...
String s = new String(bytes, StandardCharsets.UTF_8);
bytes = s.getBytes(StandardCharsets.UTF_8);

非テキスト データは変換しないでください。特定のエンコーディング、特にマルチバイト エンコーディングの UTF-8 では違法となる可能性があるためです。また、Unicode への変換は不必要な非効率です。たとえば、javacharは 2 バイト (UTF-16 エンコード) です。

目的によっては a を使用することをお勧めしByteArrayInputStream, ByteArrayOutputStream, ByteBufferます。決して弦を張らないでください。頑固な時は を使うStandardCharsets.ISO_8859_1

于 2016-05-18T15:17:57.327 に答える