字节流和字符流

问题描述 投票:39回答:5

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

谢谢

java filestream iostream
5个回答
50
投票

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

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

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


10
投票

字节流:

从oracle文档页面关于byte streams

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

enter image description here

何时使用:

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

何时不使用:

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

例如阅读文本文件

角色流:

从oracle文档页面关于character streams

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

所有字符流类都来自ReaderWriter

字符流通常是字节流的“包装器”。字符流使用字节流来执行物理I / O,而字符流处理字符和字节之间的转换。

有两个通用的字节到字符“桥”流:InputStreamReaderOutputStreamWriter

何时使用:

SocketFile中读取字符流

综上所述:

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

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


4
投票

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

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

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

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


3
投票

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


0
投票

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

除非使用二进制数据(如图像和声音文件),否则应使用读取器和写入器来读取和写入包含字符流的信息。

© www.soinside.com 2019 - 2024. All rights reserved.