版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、javaio流学习总结范文总结一:javaio流学习总结一、io流的三种分类方式1. 按流的方向分为:输入流和输出流2. 按流的数据单位不同分为:字节流和字符流3. 按流的功能不同分为:节点流和处理流二、io流的四大抽象类:字符流:reader writer字节流:inputstream(读数据)outputstream (写数据)三、inputstream 的基本方法int read () throws ioexception读取一个字节以整数形式返回,如果返回-1已到输入流的末尾void close () throws ioexception关闭流释放内存资源long skip(long
2、n)throws ioexception跳过n个字节不读四、outputstream的基本方法void write(int b)throws ioexception向输出流写入一个字节数据void flush () throws ioexception将输出流中缓冲的数据全部写出到目的地五、writer 的基本方法void write ( int c ) throws ioexception 向输出流写入一个字符数据void write (string str ) throws ioexception将一个字符串中的字符写入到输出流void write (string str , int of
3、fset , int length )将一个字符串从offset开始的length个字符写入到输出流void flush () throws ioexception将输出流中缓冲的数据全部写出到目的地六、reader的基本方法int read () throws ioexception读取一个字符以整数形式返回,如果返回-1已到输入流的末尾七、节点流类型丿八、访问文件之 fileinputstream 和 fileoutputstream 继承基类用于向文件中输入输出字节继承基类用于向九、访问文件之filereader 和filewriter文件中输入输出字符-输出流在构造函数第二个参数可以设
4、置true意义为跟在已有文件后进行输入-此类流会抛出filenotfoundexception 需要对其进行显示捕捉十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读 写的效率。此处理流的构造方法都得传相对应的基类类型bufferedreader : 提供了 readline 方法用于高校读取一行 字符串bufferedwriter :提供了 newline用于写入一个行分隔符也就是换行bufferedinputstream没多大用处bufferedoutputstream没多大用处十一、转换流:主要作用将字节流转换成字符流。用处较大!转换流在构造时可以指定其编码集合inputstreamr
5、eader 需要和 inputstream 套接 outputstreamwriter 需要和 outputstream 套接 例: outputstreamwriter osw = new outputstreamwriter(new fileoutputstream (文件路径);方法例:osw.getencoding ();获得流的编码方式十二、数据流与字节数组流:数据流主要为实现可以存取java原始数据类型如long ,boolean数据流是字节流datainputstream 需要和 inputstream 套接dataoutputstream需要和 outputstream 套接d
6、atainputstream方法: readboolean () readint()read()readutf ():网络传输常用方法读一个unicode字符串dataoutputstream 方法与 datainputstream 基本对应为写的方法/此构造函数等于已可以往一个字节数组里输入内容bytearrayoutputstreambaosnewbytearrayoutputstream ();/此方法为获取一个字节数组方法返回字节数组baos.tobytearray ();/此方法获取字节数组占了多少字节。availablenew bytearrayinputstream (一个字节数
7、组)()Ibytearrayoutputstream baos =2 new bytearrayoutputstream();3 dataoutputstream dos =4 new dataoutputstream(baos);5 try 6 dos.writedouble(math.random();7 dos.writeboolean(true);8 bytearrayinputstream bais =9 new bytearrayinputstream(baos.tobytearray();1011 datainputstream dis = new datainputstream
8、(bais);121314 dos.close(); dis.close();15 catch (ioexception e) 16 e.printstacktrace();17 十三、print 流print 流只有输出流无输入流,printwriter 和printstream分别针对字符字节两个类提供了重载的print和println方法用于多种数据类型的输出printwriter和printstream的输出操作不会抛出异常printwriter和 printstream有自动 flush 功能-system.setout( 接收 outputstream 类):用于设置系统默认输出流
9、十四、object 流等同于c#序列化,用直接将 object写入或读出transient关键字为不序列化此成员变量需要序列化的类必须实现serializable 接口主要方法: writeobject ( object ); readobject ();读出为object类型需要强转数据类型122 public class testobjectio 3 public static void main(string args) throwsexception 4 t t = new t();5 t.k = 8;6 fileoutputstreamfos=newfileoutputstream(
10、 “ d:/share/java/io/testobjectio.dat”)oosnew7 objectoutputstreamobjectoutputstream(fos);8 oos.writeobject(t);9 oos.flush();10 oos.close();12newnew13 fileinputstreamfis=fileinputstream(“d:/share/java/io/testobjectio.dat” );14 objectinputstreamois=objectinputstream(fis);15 t treaded = (t)ois.readobjec
11、t();16 +“ + treaded.j“ + treaded.d +“+ treaded.k);1717 18 2019 class t20 implements serializable21 22 int i = 10;23 int j = 9;24 double d = 2.3;25 transient int k = 15;26 总结二:javaio 流学习总结今天刚刚看完java的io流操作,把主要的脉络看了一遍, 不能保证以后使用时都能得心应手, 但是最起码用到时知道有这 么一个功能可以实现,下面对学习进行一下简单的总结:io流主要用于硬板、内存、键盘等处理设备上得数据操作,根据
12、处理数据的数据类型的不同可以分为:字节流(抽象基类为inputstream 和 outputstream )和字符流(抽象基类为 reader 和writer )。根据流向不同,可以分为:输入流和输出流。字符流和字节流的主要区别:1. 字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在utf-8码表中是3个字节)时。先去查指定的编码表,将 查到的字符返回。2. 字节流可以处理所有类型数据,如:图片, mp3 avi视 频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。io流主要可以分为
13、节点流和处理流两大类。一、节点流类型该类型可以从或者向一个特定的地点或者节点读写数据二、处理流类型该类型是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,处理流的构造方法总是要带一个其他流对象作为参数,一个流对象进过其他流的多次包装,叫做流的链接。主要可以分为以下几种:一、缓冲流(bufferedinputstream/bufferedoutputstream 和bufferedwriter/bufferedreader)他可以提高对流的操作效率。该类型的流有一个特有的方法:readline(); 次读一行,到行标记时,将行标记之前的字符数据作为字符串返回, 当读到 末尾时
14、,返回null,其原理还是与缓冲区关联的流对象的read方法,只不过每一次读取到一个字符,先不进行具体操作,先进行临时储存,当读取到回车标记时,将临时容器中储存的数据一次性返回。二、转换流(inputstreamreader/outputstreamwriter)该类型时字节流和字符流之间的桥梁,该流对象中可以对读取到的字节数据进行指定编码的编码转换。注意:在使用filereader操作文本数据时,该对象使用的时默认的编码表,即filereaderfr=new filereader( “a.txt ” ); 与inputstreamreaderisr=newinputstreamreader(
15、newfileinputstream(“a.txt ”);的意义相同。如果要使用指定表编码表时,必须使用转换流,即如果a.txt中的文件中的字符 数据是通过utf-8的形式编码,那么在读取时,就必须指定编码 表,那么转换流时必须的。即:inputstreamreader isr=new inputstreamreader(new fileinputstream(“a.txt ” ),utf -8);三、数据流(datainputstream/dataoutputstream )该数据流可以方便地对一些基本类型数据进行直接的存储和读取,不需要再进一步进行转换,通常只要操作基本数据类型的数据,就需
16、要通过 datastream进行包装。四、打印流(printstream/printwriter )printstream 是一个字节打印流,system.out 对应的类型就 是printstream ,它的构造函数可以接受三种数据类型的值:1.字符串路径。2.file 对象3.outputstreamprintstream是一个字符打印流,它的构造函数可以接受四种类型的值: 1.字符串路径。2.file 对象3.outputstream4.writer 对于1、2类型的数据,可以指定编码表,也就是字符 集,对于3、4类型的数据,可以指定自动刷新,当该自动刷新 为true时,只有3个方法可以
17、用:println,printf,format。五、 对象流(objectinputstream/objectoutputstream)该类型的流可以把类作为一个整体进行存取,主要方法有:object readobject();该方法抛出异常:classnotfountexception 。void writeobject(object):被写入的对象必须实现一个接口: serializable,否贝U就会抛出:notserializableexception总结三:javaio流学习总结流的概念和作用流是一组有顺序的,有起点和终点的字节集合, 是对数据传 输的总称或抽象。即数据在两设备间的传
18、输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。io流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指 定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit )为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。结论:只要是处理纯文本数据, 就优先考虑使用字符流。除此之外都使
19、用字节流。输入流和输出流对输入流只能进行读操作, 对输出流只能进行写操作, 程序 中需要根据待传输数据的不同特性而使用不同的流。java io 流对象1. 输入字节流i叩utstreamio中输入字节流的继承图可见上图,可以看出:inputstream是所有的输入字节流的父类,它是一个抽象类。bytearrayinputstreamstringbufferinputstreamfileinputstream是三种基本的介质流,它们分别从byte数组、stringbuffer、和本地文件中读取数据pipedinputstream 是从与其它线程共用的管道中读取数据,与piped相关的知识后续单独
20、介绍objectinputstream 和所有 filterinputstream的子类都是装饰流(装饰器模式的主角)。2. 输出字节流 outputstreamio中输出字节流的继承图可见上图,可以看出:outputstream 是所有的输出字节流的父类,它是一个抽象 类。bytearrayoutputstream、fileoutputstream是两种基本的介质流,它们分别向 byte数组、和本地文件中写入数据。 pipedoutputstream 是向与其它线程共用的管道中写入数据,objectoutputstream 和所有 filteroutputstream 的子类 都是装饰流。“
21、存在及合理”我们看看这些字节流中不太对称的几个类吧!linenumberinputstream主要完成从流中读取数据时,会得到相应的行号,至于什么时候分行、在哪里分行是由改类主动确 定的,并不是在原始中有这样一个行号。在输出部分没有对应的部分,我们完全可以自己建立一个linenumberoutputstream ,在最初写入时会有一个基准的行号,以后每次遇到换行时会在下一行添加一个行号,看起来也是可以的。好像更不入流了pushbackinputstream的功能是查看最后一个字节,不满意就放入缓冲区。主要用在编译器的语法、词法分析部分。输出部 分的bufferedoutputstream几乎实
22、现相近的功能。stringbufferinputstream已经被 deprecated,本身就不应该出现在inputstream 部分,主要因为string应该属于字符流的范围。已经被废弃了,当然输出部分也没有必要需要它了! 还允许它存在只是为了保持版本的向下兼容而已。sequenceinputstream可以认为是一个工具类,将两个或者多个输入流当成一个输入流依次读取。完全可以从io包中去除,还完全不影响 io包的结构,却让其更“纯洁”卜卜纯洁的 decorator 模式。printstream也可以认为是一个辅助工具。主要可以向其他输出流,或者 file “ putstream写入数据,
23、本身内部实现还是带缓冲的。本质上是对其它流的综合运用的一个工具而已。一样可以踢出 io 包! system.out 和 system.out 就是 printstream的实例!3. 字符输入流reader在上面的继承关系图中可以看出:reader是所有的输入字符流的父类,它是一个抽象类。charreader、stringreader是两种基本的介质流,它们分别将char数组、string 中读取数据。pipedreader 是从与其它 线程共用的管道中读取数据。bufferedreader很明显就是一个装饰器,它和其子类负责装饰其它reader对象。filterreader 是所有自定义具体
24、装饰流的父类,其子类 pushbackreader 对reader 对象进行装饰,会增加一个行号。inputstreamreader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。filereader可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将file“putstream转变为reader的方法。我们可以从这个类中得到一定的技巧。 reader中各个类的用途和使用方法基本和inputstream 中的类使用一致。后面会有reader与inputstream的对应关系。4. 字符输出流writer在上面的关系图中可以看出:writer 是所有的输出字符流的父类,它是一个抽象类。chararraywriter 、stringwriter是两种基本的介质流, 它们分别向 char数组、string 中写入数据。pipedwriter 是向 与其它线程共用的管道中写入数据,bufferedwriter是一个装饰器为 writer 提供缓冲功能。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年古代文学史重要事件阅读理解与背诵测试
- 宏观经济视角下的长周期资本运行机制分析
- 医学课件-第七章运动损伤概述
- 医学课件-心肌纤维化与心房颤动的研究进展
- 2025年医学分析-中医骨伤科传统疗法
- 2025年医学专题-2025年医院登革热及基孔肯雅热诊疗知识
- 2025 中医诊断学膀胱湿热病症查房课件
- 毕业墙课程设计
- 基于SPI的Flash读写控制器设计要点实战课程设计
- (完整版)无源医疗器械研究资料-模板
- 2026年黑龙江省法官逐级遴选考试题及答案
- 费马原理与变折射率光学
- 守护学生心理健康教育的主阵地
- 岩石学基性超基性岩类
- GB/T 773-1993低压绝缘子瓷件技术条件
- 预防高血压从认知高血压开始知识讲座课件
- 部编版七年级历史上册课件(全册)
- 行政法与行政诉讼法案例教程
- 九年级生命生态安全教案(完整版)
- 竞选大学心理委员ppt模板
- 《矿山机械》说课稿
评论
0/150
提交评论