输入输出(IO)与流的概念

IO流是一种抽象概念,它代表了数据的无结构化传递,按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作成为提取操作,而向流中添加数据的操作称为插入操作,用来进行输入输出操作的流就成为IO流。换句话说,IO流就是以流的方式进行输入输出

概念

输入输出(IO)与流的概念

输入输出(IO)是指计算机同任何外部设备之间的数据传递,常见的输入输出设备有文件,键盘,打印机,屏幕,网络等,数据可以按记录(或称数据块)的方式进行传递,也可以流的方式传递

所谓记录,是指有着内部结构的数据块,记录内部除了有需要处理的实际数据之外,还可能包含附加信息,这些附加信息通常是对本记录信息的描述

表示形式

IO操作的过程中,任何需要被传递的数据,在经过IO库处理前后是不同的,我们可以把数据的表示分为两种,内部表示和外部表示

数据的内部表示便于程序进行数据处理,典型的内部表示有:整数型的二进制表示,浮点数的IEEE表示,字符的ASCII或Unicode表示,数据的外部表示则根据不同的外部设备的需要有具体不同的表现形式, 如果外部数据表示是可读的字符串序列,则称为文本IO,否则为二进制IO,标准IO流的主要目的是支持文本IO,不直接支持二进制IO

虽然IO流是以流的方式进行数据传递,但这不z表明传递的数据不能有任何结构,而是指IO流的概念是以流的方式进行输入输出,所传递的数据的内部结构隐藏在对流数据的解释中

步骤

在IO流中,输入输出分为4步:格式化/解析,缓冲,编码,转换,传递

  • 格式化/解析:在内部数据表示(以字节为单位)与外部数据表示(以字符为单位)之间进行双向转换,例如一个2字节的整数10002,就需要5个字符表示
  • 缓冲:用于在格式化/解析与传递之间缓存字符序列,对于输出较短的字符序列格式化之后并不马上输出,二十保存在缓冲区里,等待积累到一定规模之后再传递到外部设备,相反,从外部设备读入的大量数据也是先放在缓冲区,然后逐步取出完成输入,默认时,IO流的输入输出是经过缓冲的,也可以让IO流工作在无缓冲模式下
  • 编码转换:是将一种字符表达式转换成另一种字符表达式,如果格式化产生的字符表达式与外部表达式不同(输出时)或者外部表达式与IO流理解的表达式不同(输入时),就必须进行编码转换,如多字节编码与宽字符编码之间的转换等,多数情况下,并不需要进行编码转换
  • 传递:主要是与外部设备进行通信,输出时,传递负责将经过格式化,缓冲以及编码后的字符序列发送到外部设备;输入的时咋负责将外部设备抽取数据,为其后面进行的编码转换,缓冲以及解析等步骤提供字符串序列
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值