字节流和字符流
回答
流是顺序访问文件的一种方式。一个字节流逐字节地访问该文件。字节流适用于任何类型的文件,但不适用于文本文件。例如,如果文件使用的是Unicode编码,并且字符由两个字节表示,则字节流将分开处理这些字符,您需要自行完成转换。
字符流将逐个字符地读取文件。字符流需要被赋予文件的编码才能正常工作。
尽管Microsoft Word文档包含文本,但无法使用字符流(它不是文本文件)进行访问。您需要使用字节流来访问它。
感谢kgiannakakis, 和.txt文件呢? – JavaUser 2010-06-10 11:58:46
字符流适合读取.txt文件。但正如我所说,你需要知道文本文件的编码。 – kgiannakakis 2010-06-10 12:00:19
我在询问有关.txt文件存在于Windows操作系统中 – JavaUser 2010-06-10 12:04:19
阅读this。它告诉你字节和字符之间的区别(以及其他有用的东西的加载)
1.面向字符与数据类型绑定。只有字符串类型或字符类型可以通过它读取,而面向字节的不绑定到任何数据类型,任何数据类型的数据都可以被读取(字符串除外),只是必须指定它。
2.Character取向由字符读取字符而面向字节由字节读取字节
3.Character定向流使用字符编码方案(UNICODE),而面向不使用任何编码方案
4字节。面向字符的流也被称为读取器和写入流 面向字节流被称为数据流,数据流的输入和输出的数据流
字节流:
从Oracle文档页面约byte streams:
程序使用字节流来执行的8位字节的输入和输出。所有的字节流类都是从
InputStream
和OutputStream
开始的。
何时使用:
字节流只能用于最原始的I/O
当不使用:
您不应该使用字节流来读取字符流
例如,要读取文本文件
字符流:
从Oracle文档页面约character streams:
Java平台存储字符使用Unicode约定值。字符流I/O自动将此内部格式转换为本地字符集和从本地字符集转换。
所有的字符流类都是从Reader
和Writer
开始的。
字节流通常是字节流的“包装”。字符流使用字节流来执行物理I/O,而字符流处理字符和字节之间的转换。
有两个通用的字节到字符“桥”流:InputStreamReader
和OutputStreamWriter
。
何时使用:
要阅读的字符流的无论是从Socket
或字符
的File
总结:
字节流读取和写入一字节一次。在处理更复杂的数据时,我们必须避免使用字节流。
字符流和其他可用的流应该用来处理复杂的数据。
这些概念总是很神秘。 [问题](https://stackoverflow.com/q/46953036/3317808) – overexchange 2017-10-26 11:56:31
字符流将逐字符地读取文件。字符流能够读取16位字符(字节流读取8位字符)。字符流能够将8位数据隐式转换为16位数据,反之亦然。字符流可以支持ASCII,Unicode,UTF-8,UTF-16等所有类型的字符集。但字节流只适用于ASCII字符集。Java平台使用Unicode约定存储字符值。字符流I/O自动将此内部格式转换为本地字符集和从本地字符集转换。
除非您正在处理二进制数据,例如图像和声音文件,否则您应该使用读写器来读取和写入字符流的信息。
- 1. Java - 字节流与字符流?
- 2. C++字节流
- 3. Telnet流的字节到字符转换
- 4. 将int字节流转换为浮点字节流
- 5. POST文件流八位字节流
- 6. 读取线和字节[]从输入流
- 7. Python中的字节流和utf-8 3
- 8. Indy TCPClient和InputBuffer中的流氓字节
- 9. 图像字节流操作
- 10. 字节流单元测试
- 11. 在字节流混乱
- 12. 流到字节数组
- 13. pycurl READFUNCTION与字节流
- 14. C#字节流通过TCP
- 15. h.264字节流解析
- 16. 为字符串流
- 17. 向字符串流添加字符
- 18. 将IO [FilePath]转换为字符串或字节流
- 19. 如何从无限字节流中读取UTF-8字符 - C#
- 20. 使用Ruby 1.9字符串作为字节流而不是编码字符串
- 21. 从ac#中输入带有字符/字符串/字节流的java类
- 22. 流文件和字符集问题
- 23. c + +比较和替换字符串流
- 24. 流写入字符串和byte []数组?
- 25. 字符串流对象
- 26. 使用字符串或流?
- 27. C中的字符串流
- 28. 流基础:从字符串
- 29. 带字符的流问题
- 30. 转换字符串到流
亲爱的downvoter - 请鼓励作者提供更好的问题,留下一个不**为什么**你决定downvote(个人我没有看到一个强有力的理由) – 2010-06-10 11:57:16
打开记事本中的MS Word文档。你看到了什么?垃圾就像当你在记事本中打开一个'exe'一样?它会然后是二进制数据:) – BalusC 2010-06-10 11:57:18
我投这篇文章,因为我从帖子中看到的是字节流和字符流之间的混淆。使用记事本解释问题是没有意义的。在我看来,傲慢者非常傲慢。 – Paul 2011-09-06 07:22:49