缓冲流

缓冲流

缓冲流给基本的字节流增加一个缓冲区(数组),可以提高输入和输出的效率,是在基本的流对象上创建而来的。

字节缓冲输出流

BufferedOutputStream extends OutputStream

构造方法:

BufferedOutputStream( OutputStream out)

创建一个新的缓冲输出流(默认缓冲区大小),将数据写入底层输出流

BufferedOutputStream( OutputStream out , int size)

创建一个新的缓冲输出流(指定缓冲区大小),将数据写入底层输出流

使用步骤:

1.创建一个File OutputStream对象,构造方法传递写入数据目的地

2.创建一个BufferedOutputStream对象,构造方法中传递File OutputStream对象,提高效率;

3.调用BufferedOutputStream对象的write方法,把数据写入缓冲区

4.调用BufferedOutputStream对象的flush方法,把内部缓冲数据刷新到文件中

5.释放资源

 

字节缓冲输入流

BufferedInputStream extends InputStream

构造方法: BufferedInputStream( InputStream in)

创建一个新的缓冲输出流(默认缓冲区大小),将数据写入底层输出流

BufferedInputStream( InputStream in , int size)

创建一个新的缓冲输出流(指定缓冲区大小),将数据写入底层输出流

使用步骤:

1.创建一个FileInputStream对象,构造方法传递写入数据目的地

2.创建一个BufferedInputStream对象,构造方法中传递FileInputStream对象,提高效率;

3.调用read方法读取文件;

4.释放资源

 

字符缓冲流

与字节缓冲流的构造方法和使用步骤类似。有两个特有的成员方法

1.void newline() (BufferedWrite)

写入一个行分隔符(根据不同的操作系统获取不同的行分隔符)

  1. void readline()

    读一行数据,遇到行分隔符时终止

    返回值:若不含任何行分隔符,读到流末尾时返回null。

练习: 利用缓冲流复制一张图片,并测试效率

public static void main(String[] args) throws IOException {
    long e1 = System.currentTimeMillis();
    FileOutputStream fos = new FileOutputStream("C:\Users\lenovo\IdeaProjects\okok\Month\src\LearnIO2\copy.jpg");
    FileInputStream fis = new FileInputStream("D:\123.jpg");
    BufferedInputStream bufis = new BufferedInputStream(fis);
    BufferedOutputStream bufos = new BufferedOutputStream(fos);
    byte[] bytes = new byte[1024];
    boolean var8 = false;

    while(bufis.read(bytes) != -1) {
        bufos.write(bytes);
    }

    bufos.flush();
    bufos.close();
    bufis.close();
    long e2 = System.currentTimeMillis();
    System.out.println("共用时:" + (e2 - e1) + "毫秒");
}
原文地址:https://www.cnblogs.com/susexuexi011/p/13965800.html