请解释Byte流和字符流是什么。这究竟是什么意思? Microsoft Word文档是面向字节还是面向字符?
谢谢
答案 0 :(得分:50)
流是一种顺序访问文件的方式。字节流逐字节地访问文件。字节流适用于任何类型的文件,但不太适合文本文件。例如,如果文件使用的是unicode编码,而字符用两个字节表示,则字节流将单独处理这些字符,您需要自己进行转换。
字符流将逐个字符地读取文件。需要为字符流提供文件的编码才能正常工作。
虽然Microsoft Word文档包含文本,但无法使用字符流(它不是文本文件)访问它。您需要使用字节流来访问它。
答案 1 :(得分:10)
<强>字节流强>:
从oracle文档页面了解byte streams:
程序使用字节流来执行8位字节的输入和输出。所有字节流类都来自
InputStream
和OutputStream
。
何时使用:
字节流只应用于最原始的I / O
何时不使用:
您不应使用字节流来阅读字符流
e.g。阅读文本文件
角色流:
从oracle文档页面了解character streams:
Java平台使用Unicode约定存储字符值。字符流I / O自动将此内部格式转换为本地字符集。
所有字符流类都来自Reader
和Writer
。
字符流通常是&#34;包装&#34;用于字节流。字符流使用字节流来执行物理I / O,而字符流处理字符和字节之间的转换。
有两个通用的字节到字符&#34;桥接&#34;流:InputStreamReader
和OutputStreamWriter
。
何时使用:
从Socket
或File
个字符
摘要:
字节流一次读取和写入一个字节。在处理更复杂的数据时,我们必须避免使用字节流。
应该使用字符流和其他可用流来处理复杂数据。
答案 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自动将此内部格式转换为本地字符集。
除非您使用的是二进制数据,例如图像和声音文件,否则您应该使用读者和编写者来读取和写入包含字符流的信息。