欢迎来到天天文库
浏览记录
ID:10828201
大小:94.00 KB
页数:11页
时间:2018-07-08
《javaio流学习总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、javaio流学习总结总结Java之IO流学习总结一、什么是流?流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件、内存、IO设备等数据的流向。而IO流就是用于处理设备上的数据,如:硬盘、内存、键盘录入等。IO流根据处理类型的不同可分为字节流和字符流,根据流向的不同可分为输入流和输出流。二、字节流和字符流的区别:字符流,因为文件编码的不同,就有了对字符进行高效操作的字符流对象,它的原理就是基于字节流读取字节时去查了指定的码表。它和字节流的区别有两点:
2、1.在读取数据的时候,字节流读到一个字节就返回一个字节,字符流使用了字节流读到一个或多个字节(一个中文对应的字节数是两个,在UTF-8码表中是3个字节)时,先去查指定的编码表,再将查到的字符返回;2.字节流可以处理所有类型的数据,如jpg、avi、mp3、Reader
3、--FileReader:用于处理文件的字符读取流对象e,Booleanappend),这构造器的作用是当传入的boolean类型的值为true时,会在指定文件末尾处进行数据的续写。清单1,将文本数据保存到文件中代码privatestaticvoidtest1(){File是所有的输入字
4、节流的父类,它是一个抽象类。2.ByteArrayInputStream、StringBufferInputStream、FileInputStream是三种基本的介质流,它们分别从Byte数组、StringBuffer、和本地文件中读取数据。PipedInputStream是从与其它线程共用的管道中读取数据,与Piped相关的知识后续单独介绍。3.ObjectInputStream和所有FilterInputStream的子类都是装饰流(装饰器模式的主角)。2.输出字节流OutputStreamIO中输出字节流的继承图可见上图,可以看出:1.Outp
5、utStream是所有的输出字节流的父类,它是一个抽象类。2.ByteArrayOutputStream、FileOutputStream是两种基本的介质流,它们分别向Byte数组、和本地文件中写入数据。PipedOutputStream是向与其它线程共用的管道中写入数据,3.ObjectOutputStream和所有FilterOutputStream的子类都是装饰流。3.字节流的输入与输出的对应图中蓝色的为主要的对应部分,红色的部分就是不对应部分。紫色的虚线部分代表这些流一般要搭配使用。从上面的图中可以看出JavaIO中的字节流是极其对称的。“存在
6、及合理”我们看看这些字节流中不太对称的几个类吧!1.LineNumberInputStream主要完成从流中读取数据时,会得到相应的行号,至于什么时候分行、在哪里分行是由改类主动确定的,并不是在原始中有这样一个行号。在输出部分没有对应的部分,我们完全可以自己建立一个LineNumberOutputStream,在最初写入时会有一个基准的行号,以后每次遇到换行时会在下一行添加一个行号,看起来也是可以的。好像更不入流了。2.PushbackInputStream的功能是查看最后一个字节,不满意就放入缓冲区。主要用在编译器的语法、词法分析部分。输出部分的Bu
7、fferedOutputStream几乎实现相近的功能。3.StringBufferInputStream已经被Deprecated,本身就不应该出现在InputStream部分,主要因为String应该属于字符流的范围。已经被废弃了,当然输出部分也没有必要需要它了!还允许它存在只是为了保持版本的向下兼容而已。4.SequenceInputStream可以认为是一个工具类,将两个或者多个输入流当成一个输入流依次读取。完全可以从IO包中去除,还完全不影响IO包的结构,却让其更“纯洁”――纯洁的Decorator模式。5.PrintStream也可以认为是
8、一个辅助工具。主要可以向其他输出流,或者FileInputStream写入数据,本身内部实现还是带缓冲的。本质上是对其它流的综合运用的一个工具而已。一样可以踢出IO包!System.out和System.out就是PrintStream的实例!4.字符输入流Reader在上面的继承关系图中可以看出:1.Reader是所有的输入字符流的父类,它是一个抽象类。2.CharReader、StringReader是两种基本的介质流,它们分别将Char数组、String中读取数据。PipedReader是从与其它线程共用的管道中读取数据。3.BufferedRe
9、ader很明显就是一个装饰器,它和其子类负责装饰其它Reader对象。4.FilterRead
此文档下载收益归作者所有