繁体   English   中英

fileinputstream中read方法中使用的字节数据类型

[英]types of byte data used in read method in fileinputstream

我已经阅读了有关FileInputStream ,我发现它有读取方法,它将读取文件的字节数据。

我想知道的是它读取的字节数据类型是什么? 意思是使用ASCII或Unicode还是其他任何类型?

文档中

FileInputStream用于读取原始字节流,例如图像数据。 要读取字符流,请考虑使用FileReader。

ASCII,Unicode,...适用于字符而非字节。 它们只是字节(8位)。

您可以使用public InputStreamReader(InputStream in, Charset cs)指定字符集。

FileInputStream是二进制I / O类。 它的Text I / O需要从Unicode转换为特定于文件的编码,反之亦然,但二进制I / O不需要任何转换。 从文件中读取字节时,将返回原始字节。

我想知道的是它读取的字节数据类型是什么? 意思是它使用ASCII或Unicode还是任何其他类型?

FileInputStream及其方法而言,只有一种“类型”的数据。 那种类型是“一系列字节(或八位字节)”。

任何其他“类型”用于处理另一个库(或应用程序代码)层。

您称为ASCII和Unicode的“类型”是字符编码(粗略地说)。 (事实上​​,Unicode根本不是一种编码......在这种情况下并不完全有意义。用于Unicode的编码有“UTF-8”和“UTF-16”等名称 - 请参阅http:/ /en.wikipedia.org/wiki/Comparison_of_Unicode_encodings 。)

无论如何,“处理”文本文件类型(即某些标准字符编码方案中的字符序列)的标准方法是使用Reader类。 还有一个名为InputStreamReader的包装类,专门用于从InputStream读取字符数据。

数据的其他非文本“类型”是由类,如处理ZipInputStreamInflaterInputStreamGZIPInputStream ,图像读取器类,等等。

它不会更改文件编码。 如果要以所需的编码在byte []中进行解码,可以使用charset转换所需的字符集,如下所示:

   Charset cs = Charset.forName("UTF-8"); // breaks too
   String convertedString= new String(byteArray, cs);       

暂无
暂无

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

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