流是用于连接程序和设备之间的管道,主要用于数据传输。这个管道上有很多“按钮”,每个“按钮”可以实现不同的功能。
四大基本抽象流:输入流,输出流,字节流,字符流 (流可以看成特殊的类)
文件流,缓冲流 ,转换流,数据流,print流 , object流
read input 是输入流,write output是输出流 read write是字符流 input output是字节流
示例1:注意字符流和字节流输出结果的差异
由上可知,字符流可以完整的显示汉字,而字节流不行,这是因为字符流一次读取2字节,字节流一次只读取1字节,但一个汉字有2字节,所以字节流输出中文的时候就显示错误(字母和数字只要1字节)
所以字符流读取速度较字节流快,但字符流只能复制文本,像音频视频等媒体文件只能操作字节流。
示例2,我们操作字节流来进行图片复制的功能:
示例3:缓冲流(注意区别缓冲流和虚拟内存,二者并无关系,只是虚拟内存中使用到了流的概念,具体的在此就不进行扩展了)
关于缓冲的概念可以参照电影播放过程中缓冲的情况,减少播放卡顿,观影体验更佳,如果使用字节流播放,那就是一秒一卡,心态直接被搞到爆炸。
示例4:关于数据流的传输,在网络编程中经常会使用到
示例5:转换流的应用:
示例6:print流 (注意: data数据流输出的是二进制代码,用户一般看不懂,计算机可以识别,如下:12345写入记事本后显示9 print是字符串流,用户可以看懂)
以下的分别设置输出路径有利于程序的调试
示例7object流:
示例9,关于IO流一些补充知识:这些不常用,但对做系统程序开发的时候用的比较多