字节流顾名思意是处理2进制的
字符流处理的字符集
网友回复:字节流就是流里的最小单位是byte,一个byte所包含的信息的-128到127. 仅此而已。
字符流就是流里的最小单位是char,一个char表示一个符号,如数字,字面,标点等等。要表示一个符号,就必须知道这个符号的编码方式。如ascii,utf-8, gb2312等等。就是考这些编码方式将符号编码之后在存入char变量中。
换个角度说,我们看一个字节流时,只关注每个字节是多大。但是在关注字符流时,我们需要从这个字符有多大,编码格式是什么,来看出这个字符表示一个什么符号。
流,字符流和字节流都是什么
流就是stream. 一个连续的字节队列。
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。
从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成 。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。
转载自:http://fuzhong1983.blog.163.com/blog/static/168470520081111113125717/