繁体   English   中英

读取文件返回的字节与Java中字符串的getbytes之间的差异?

[英]difference between bytes returned from reading a file and getbytes from string in Java?

与将数据读入String然后从中获取字节相比,将文件直接读入字节数组会产生不同的输出。

直接从文件读取的字节的形式是什么,它与String中的get字节有什么不同。

与将数据读入String然后从中获取字节相比,将文件直接读入字节数组会产生不同的输出。

好吧,它可能。 它可能不会。 这取决于您如何将文件作为文本读取,以及如何将文本转换回字节。

如果您在两个方向上使用相同的编码, 并且文件最初包含该编码中的文本,那么您可能会返回相同的字节。 但是如果您使用错误的编码(例如,您将ISO-8859-1编码的文本读作UTF-8)或者如果您对两次转换使用不同的编码,那么您很可能会得到不同的结果。

将文本视为有点像图像格式 - 如果您读取.png文件然后写出.jpeg文件,您不会期望具有相同的字节,是吗? 同样,如果您尝试使用JPEG解码器读取.png文件,则可能会出现垃圾(或更可能是错误)。

基本上, 不要将文本视为一个字节序列 - 它不是。 可以认为它是完全独立的,编码用于在文本和二进制表示之间进行转换。 有关更多详细信息,请参阅Marc Gravell关于IO的博客文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM