缓冲流
缓冲流给基本的字节流增加一个缓冲区(数组),可以提高输入和输出的效率,是在基本的流对象上创建而来的。
字节缓冲输出流
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)
写入一个行分隔符(根据不同的操作系统获取不同的行分隔符)
-
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) + "毫秒"); }