字节流和字符流

时间:2010-06-10 11:40:19

标签: java filestream iostream

请解释Byte流和字符流是什么。这究竟是什么意思? Microsoft Word文档是面向字节还是面向字符?

谢谢

5 个答案:

答案 0 :(得分:50)

流是一种顺序访问文件的方式。字节流逐字节地访问文件。字节流适用于任何类型的文件,但不太适合文本文件。例如,如果文件使用的是unicode编码,而字符用两个字节表示,则字节流将单独处理这些字符,您需要自己进行转换。

字符流将逐个字符地读取文件。需要为字符流提供文件的编码才能正常工作。

虽然Microsoft Word文档包含文本,但无法使用字符流(它不是文本文件)访问它。您需要使用字节流来访问它。

答案 1 :(得分:10)

<强>字节流

从oracle文档页面了解byte streams

  

程序使用字节流来执行8位字节的输入和输出。所有字节流类都来自InputStreamOutputStream

enter image description here

何时使用:

字节流只应用于最原始的I / O

何时不使用:

您不应使用字节流来阅读字符流

e.g。阅读文本文件

角色流:

从oracle文档页面了解character streams

  

Java平台使用Unicode约定存储字符值。字符流I / O自动将此内部格式转换为本地字符集。

所有字符流类都来自ReaderWriter

字符流通常是&#34;包装&#34;用于字节流。字符流使用字节流来执行物理I / O,而字符流处理字符和字节之间的转换。

有两个通用的字节到字符&#34;桥接&#34;流:InputStreamReaderOutputStreamWriter

何时使用:

SocketFile个字符

读取字符流

摘要

字节流一次读取和写入一个字节。在处理更复杂的数据时,我们必须避免使用字节流。

应该使用

字符流和其他可用流来处理复杂数据。

答案 2 :(得分:4)

1.Character oriented与数据类型相关联。只能读取字符串类型或字符类型,而面向字节不依赖于任何数据类型,可以读取任何数据类型的数据(字符串除外),只需指定它即可。

2.字符导向逐字符读取,而字节导向逐字节读取

3.面向字符的流使用字符编码方案(UNICODE),而面向字节的方法不使用任何编码方案

4.面向字符的流也称为读写器流   面向字节的流称为数据流 - 数据输入流和数据输出流

答案 3 :(得分:3)

阅读this。它告诉你字节和字符之间的区别(以及其他有用的东西)

答案 4 :(得分:0)

字符流将逐个字符地读取文件。字符流能够读取16位字符(字节流读取8位字符)。字符流能够将8位数据隐式转换为16位数据,反之亦然。字符流可以支持所有类型的字符集ASCII,Unicode,UTF-8,UTF-16等。但字节流仅适用于ASCII字符集.Java平台使用Unicode约定存储字符值。字符流I / O自动将此内部格式转换为本地字符集。

除非您使用的是二进制数据,例如图像和声音文件,否则您应该使用读者和编写者来读取和写入包含字符流的信息。