io---缓冲流

缓冲流:

    BufferedOutputStream:字节缓冲输出流

在写数据时,如果一个字节一个字节的写,写的次数明显很多,效率就会变得很低。

如何提高效率呢。

缓冲输出流的特点是:在流里维护了一个缓冲区,写字节时,先将字节写入缓冲区, 当缓冲区满时,再一次性的将数据写到文件里。这样就降低了写的次数,因此提高了效率。  

因此缓冲输出流缺失即时性,可以使用flush方法进行冲刷

    

常用构造器:

        BufferedOutputStream(OutputStream out)

                创建一个指定字节输出流的缓冲流对象

        BufferedOutputStream(OutputStream out,int size)

                创建一个指定字节输出流的缓冲流对象,并设置缓冲区的大小

PS:当一次写的字节超出缓冲区大小,会出现溢出情况,溢出的字节会先写出到文件中             

常用方法:

        void write(int b):

                        写int数据的低八位,写入缓冲区内

        void write(byte[] b,int off,int len)

                        写指定长度len的字节数组,写入缓冲区           

       BufferedInputStream:字节缓冲输入流

       在读取字节时,也是一个字节一个字节的读,次数多,效率低。

使用缓冲输入流,内部维护了一个缓冲区,默认8k,先一次性将缓冲区装满等待读取.

当将缓冲区的数据读完,缓冲区再次存储后续数据。读取的次数明显降低效率高      

     

构造器:

       BufferedInputStream(InputStream is);

       BufferedInputStream(InputStream is,int size);

常用方法:

       int read(byte[] bs)读取缓冲区里的字节存储bs中,

当一次性得去的字节小于缓冲区,我们是从缓冲区里读数据。此时,效率高  

当一次性读取的字节超出缓冲区大小不使用缓冲区,直接从文件里读。        

       int read(byte[] bs,int off,int len)             

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

数据字节流,与缓冲流一样,父类都是过滤字节流(

     FilterOutputStream/FilterInputStream    

         )

这两个类提供了几个特殊的方法,可以直接写基本数据类型

数据输出流:DataOutputStream

构造器:

    DataOutputStream(OutputStream os)

        创建一个指定字节输出流的数据输出流对象   

常用方法:

         除了提供写一个字节和写一个字节数组的方法外,还提供了如下方法      

      writeByte(int b)

      writeShort(int s)

      writeInt(int i)

      writeLong(long l)

      writeFloat(float f)

      writeDouble(double d);

      writeChar(int c);

      writeBoolean(boolean b)

      writeUTF(String s);   

      DataInputStream

猜你喜欢

转载自blog.csdn.net/qq_42721694/article/details/82085415