带缓存的输入输出流

  • 格式:docx
  • 大小:38.33 KB
  • 文档页数:5

带缓存的输入输出流
缓存是IO的一种性能优化,缓存流为IO流增加了内存缓存区.有了缓存区,使得在流上执行skip(),market(),reset() 方法成为了可能--_--_-__--_===.
BufferedInPutStream和BufferedOutPutStream类BufferedInPutStream类可以对所有的InPutStream类进行带缓存区的包装,以达到性能的优化.BufferedInPutStream类提供了两个构造方法: -- BufferedInPutStrem(InPutStream in)
-- BufferedInPutStream(InputStreamin,int size)
第一种形式的构造方法创建了一个带有32个字节的缓存流;第二种构造方法按指定的大小(字节)来构造缓存流.
BufferedInputStream的作用是为其他输入流提供缓冲功能,创建BufferedInPutStream时,我们会通过它的构造函数指定某个输入流为参数,BufferedInPutStream会将该输入流数据分批读取,每次读取一部分带缓冲区中,操作完缓冲区的这一部分数据后,在从输入流中读取下一部分数据.
为什么需要缓冲区呢?原因很简单:效率问题!缓冲区的数据实际上上是保存在内存中,而原始数据可能保存在硬盘等存储介质中,而我们知道,从内存中读取数据的速度比从硬盘中读取数据的速度至少快10倍以上.那为什么不一次把全部数据都读取到缓冲区呢,
第一:读取全部数据可能需要的时间比较长,
第二:内存价格很贵且不想硬盘那样容量很大.
使用BufferedOutPutStream输出信息和使用BufferedInPutStream输入
信息完全一样,只不过
BufferedOutPutStrem类有一个flush()方法来将
缓存区的数据强制输出完.(flush()
方法就是用来即使在缓存区没有慢
的情况下也可以继将其强制写入到外设,
习惯上成这个过程为刷新flush()方法只对使用缓存区的OutPutStream类的子类有效,当调用close()方法时,系统在关闭流之前,也会将缓存区的内容刷新到磁盘中) BufferedReader与BufferedWriter类BufferedReader类与BufferedWritre类分别继承自Reader类和Writer 类.这两个类具有相同的内部缓存机制,并可以以行尾单位进行输入输出.
根据BufferedReader类的特点,总结出如图琐事的字符数据读取文件的过程.
BufferedReader类常用的方法如下:
【1】r ead()方法.读取单个字节
【2】R eadLine()方法.读取一个文本行,并将其返回为字符串,若无字符串可读,则返回null.
BufferedWriter类中的方法都返回void.常用的方法如下:
【1】w rite(String s,intoff,intlen)方法,写入字符串的某一部分.
【2】F lush()方法.刷新该流的缓存.
【3】n extLine()方法.写入一个行分隔符.
在使用BufferederWriter累的write()方法时,数据并没有立即被写入输出流,而是首先进入缓存区中.如果想立即将缓存区中的数据写入输出流.一定要调用flush()方法刷新该缓存流.
【实例源程序:】
数据输入/输出流
数据输入输出流(DateInPutStream类和DataOutPutStream类)允许机器以与应用程序去管的的方式从底层输入输出流中读取java基本数据类型.也就是说,在读取数据时,不必再关心这个数据是那种字节. (DateInPutStream类和DataOutPutStream类构造方法如下: DataInPutStream(InPutStream in):使用指定的基础InPutStream创建
DataInPutStream
DataOutPutStream(OutPutStreamout):创建一个新的数据输入流,将数
据写入指定的基础输入流DataInPutStream类提供了如下三种写入字符串的方法:
writeBytes(String s);//以字节方式写入
writeChars(String s);//以字符方式写入
writeUTF(String s);//以UTF编码写入
由于java中的字符是Unicode编码,是双字节的,writeBytes()方法知识将字符串中的没一个字符的低字节内容写入到目标设备中.而writeChars()方法是将字符串中没一个字符的两个字节写入到设备中.writeUTF()方法将字符串按照UTF编码后的字节长度写入到设备中,然后才是没一个字节的UTF编码.
【示例程序:】。