1

我的 java 程序中有一个消息传递类,它只使用String值而不使用任何binary数据。

我想发送一个rpm文件,所以基本上binary数据通过这个消息传递类到一个receiver.

我知道这可以通过将数据binary最终转换为 a然后再转换回文件来完成。Stringmessagingbinaryreceiving

但是我的问题是,在将我的binary文件转换为String然后返回binary 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是两个字节(UTF-16 编码)。

最好将 aByteArrayInputStream, ByteArrayOutputStream, ByteBuffer用于某些目的。从不串。当顽固时,然后使用StandardCharsets.ISO_8859_1.

于 2016-05-18T15:17:57.327 回答