首页 > 学院 > 开发设计 > 正文

IO流知识点总结

2019-11-06 08:52:07
字体:
来源:转载
供稿:网友
1.分为字符流和字节流字符流:ReaderWriterclose方法会刷新一次内部缓冲区,但是以后就不能写入了。2.缓冲区:2.1写数据创建文件夹的时候:创建缓冲区之前先要创建流对象FileWriter,然后将需要被提高效率的流对象作为参数传递给缓冲区的构造函数BufferWriter a=new BufferWriter(流对象)即可。2.2读数据的时候:先创建读取流对象:FileReader,然后将字符读取流对象作为参数传递给缓冲对象的构造函数BufferReader。3.readLine方法原理:无论是读一行,获取读取多个字符,其最终都是在硬盘上一个一个读取,所以最终使用的还是read方法一次读一个方法。4:装饰设计模式:当想要对已有对象进行功能争强时,可以定义类,将对象传入,基于已有的功能,并提供加强功能,那么自定义类称为装饰类。5.字节流(不需要刷新,但是也需要关闭资源):操作图片数据:这是用到字节流。InputStreamOutputStream6.使用readline方法打印从键盘输入的数据:通过InputStream 获取从键盘上输入的的字节流InputStreamReader将字节流装换成字符流BufferedReader将字节流装入缓冲区调用readLine方法一行一行从缓冲区中读取数据。7.流操作的基本规律:通过三个明确来判断:1.明确源和目的。源:输入流 :InputStream Reader目的:输入流 OutPutStream Writer2.操作的数据是否是纯文本:是:字符流 Reader or Writer否:字节流 OutPutStream or OutPutStream3.当体系明确后,再明确要使用哪个具体的对象通过设备来进行区分:原设备:内存,硬盘,键盘目的设备:内存,硬盘,控制台例1:需求:将一个文本中的数据存储到另一个文件中(复制文件)。分析:1.源:输入流。InputStream Reader,操作的数据是纯文本,选择Reader,设备是硬盘上的一个文件,故选择FileReader,需要提高效率:BufferedReader  目的:输出流。OutPutStream Writer,是纯文本,选择Writer,设备是硬盘上的一个文件,选择FileWriter,需要提高效率:BufferedWriter。2.将键盘输入的数据保存在一个文件中源:InputStream Reader是纯文本:Reader设备:键盘。System.in,System.in对应的是字节流,为了操作键盘的文本数据方便。转换成字符流按照字符串操作最方便,所以既然明确了Reader,那么就将System.in装换成Reader,用到Reader体系中的InputStreamReader,InputStreamReader isr=new InputStreamReader(System.in);需要提高效率:BufferReader bufr=new BufferReader(isr);目的:OutPutStream Writer是纯文本数据:Writer设备:硬盘 FileWriterFileWriter fw=new FileWriter("文件名"),需要提高效率,BufferedWriter bufw=new BufferedWriter(fw).扩展:把录入的数据按照指定的编码表,将数据存入到文件中。目的:OutputStream Writer是纯文本,Write8.File类:当一个判断一个东西的时候,必须判断这个东西是否存在。9.PRoperties是hashtable的子类,也即是它具备集合的特点而且存储的键值对都是字符串,用于键值对形式的配置文件。10.打印流可以将各种数据原样打印1.字节打印流printStream构造函数可以接受的参数类型:file对象。File字符串路径。String字节输出流。OutputStream字符串打印流:字符输出流:Writer。PrintWriter 2.字符打印流11.RandomaaccessFile该类不算是IO体系中的成员,因为它具备读和写的功能,内部封装了一个数组,而且通过指针对数组的元素进行操作,可以通过getFilePointer获取指针的位置,同时可以通过seek改变指针的位置。通过构造函数可以看出该类只能操作文件。而且操作文件还有模式:(1)只读(2)读写等如果模式为r时,不会创建文件,会去读取一个已经存在的文件,如果该文件不存在,则会出现异常。而且该对象的构造函数要操作的文件不存在会自动创建,如果存在不会覆盖。12.DataInputStream与DataOutputStream用于操作基本数据类型的数据的流对象。13.ByteArrayInputStream:并不使用底层资源,ByteArrayInputStream在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组,这就是数据目的地。因为这两个流对象都操作的数组,并没有使用系统资源,所以不用进行close关闭。在流操作规律讲解时:原设备:硬盘),键盘(system.in),内存(ArrayStream)目的设备:控制台(System.out),硬盘(FileStream,内存(ArrayStream)14.编码:字符串变成字节数组。string.getBytes()   解码:字节数组变成字符串。new String(byte[])
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表