IO流

来源:互联网 发布:win7系统摄像头软件 编辑:程序博客网 时间:2024/06/01 11:18

IO流要自己去记得东西比较多,如果记得不熟很容易混,昨天学了一天的IO流,但今天感觉又有点忘了,今天系统的总结一下:

一:IO流分类

IO流分类有好多种,但我认为重要的需要记住的就一种就可以:即

字节流:一次读取1个 字节

字符流:一次读取2个字节

区别:字符流只能对文本文件进行读取,它比字节流对文本文件的操作效率高,字节流主要是对非文本文件(如一些媒体文件 :图片,电影,音乐等)进行操作的
注意:字节流可以对所有类型的文件进行操作。如果用字节流操作文本文件,没有字符流操作文本文件 效率高。



二:IO流的体系结构:

只需记住一张图即可


三:需要知道序列化和反序列化

序列化:将内存中的I对象以二进制形式永久的保存到磁盘中去

简单来说序列化就是一种用来处理对象流的机制。所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O)。我们可以对流化后的对象进行读写
操作,也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进行流化)!在对对象流进行读写操作时会引发一些问题,而序列化机制正是用来解决这些问题的

反序列化:将磁盘中的保存的对象读取


四:转换流也需要了解一下吧

转换流:InputStreamReader 和OutputStreamWrite

转换流主要是进行编码和解码操作的:

编码:字符串到字节数组的过程

解码:字节数组到字符串的过程


五:java.io.File类,用于表示文件或者目录,能进行新建、删除、重名名等操作,File对象但不能对文件内容进行操作,如果要对文件内容进行操作,需要使用IO流来完成,通常将File对象和IO流对象配合使用,将File对象作为参数传递给IO流的构造器使用。

最后说一下read和readLine()的区别吧,因为有时候总是分不清楚,read方法当读到没有数据时返回-1,而readLine()是一个阻塞函数,当没有数据读取时,就一直会阻塞在那,而不是返回null;因为readLine()阻塞后,System.out.println()这句根本就不会执行到,所以在接收端就不会有东西输出。要想执行到System.out.println(),一个办法是发送完数据后就关掉流,这样readLine()结束阻塞状态,而能够得到正确的结果,但显然不能传一行就关一次数据流;另外一个办法是把System.out.println()放到while循环体内也可以。

个人感觉IO流记住这些已经可以够用的了




0 0
原创粉丝点击