【问题标题】:Byte Stream and Character stream字节流和字符流
【发布时间】:2011-03-02 03:16:27
【问题描述】:

请解释什么是字节流和字符流。这些到底是什么意思? Microsoft Word 文档是面向字节还是面向字符?

谢谢

【问题讨论】:

    标签: java filestream iostream


    【解决方案1】:

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

    字符流将逐个字符地读取文件。字符流需要被赋予文件的编码才能正常工作。

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

    【讨论】:

    • 感谢 kgiannakakis,那么 .txt 文件呢?
    • 字符流适合读取 .txt 文件。但是,正如我所说,您需要知道文本文件的编码。
    • 我在询问 Windows 操作系统中存在的 .txt 文件
    • @JavaUser 你的 .txt 文件在哪个操作系统上都没有关系,它可以是任何字符编码,通常不可能明确地检测到使用的字符编码.txt 文件。最常见的编码是ISO-8859-1UTF-8
    • 如果您使用了一种新的 XML 格式,您的 Word 文档可能是文本格式 :-)
    【解决方案2】:

    字节流

    来自关于byte streams的oracle文档页面:

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

    何时使用:

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

    何时不使用:

    你不应该使用字节流来读取字符流

    例如读取文本文件

    字符流:

    来自关于character streams的oracle文档页面:

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

    所有字符流类都是ReaderWriter的后代。

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

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

    何时使用:

    SocketFile 的字符中读取字符流

    总结

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

    字符流和其他可用的流应该用于处理复杂的数据。

    【讨论】:

    • 这些概念始终是个谜。 Question
    【解决方案3】:

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

    2.面向字符是逐个字符读取,面向字节是逐字节读取

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        除非您正在处理二进制数据,例如图像和声音文件,否则您应该使用读取器和写入器通过字符流读取和写入信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 2011-11-07
          • 1970-01-01
          • 1970-01-01
          • 2011-06-12
          相关资源
          最近更新 更多