程序地带

字节缓冲流


1.1概述

缓冲流的基本原理,在创建对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。


1.2字节缓冲流

构造方法 public BufferedInputStream(InputStream in);创建一个新的缓冲输入流 public BufferedOutputStream(OutputStream out);创建一个新的缓冲输出流


1.3字节缓冲输出流

/* public BufferedOutputStream(OutputStream out); 继承父类OutputStream的共性成员方法: close flush write 构造方法: BufferedOutputStream(OutputStream out) 传递FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区,提高FileOutputStream的写入提高效率 int size:指定缓冲区内部缓冲区的大小,不指定默认 使用步骤 1、创建FileOutputStream对象,构造方法中要绑定的输出的目的地 2、创建一个缓冲流对象,构造方法传递FileOutputStream对象,提高FileOutputStream效率 3、使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中 4、flush,把缓冲区的数据刷新到文件中


*/


public class demo01BufferedOutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fot = new FileOutputStream("D:\IdeaProjects\basic-code\aaaa\qaw.txt");
BufferedOutputStream bot = new BufferedOutputStream(fot);
bot.write("把数据写入内部缓冲区中".getBytes());
bot.flush();
}
}
1.4字节缓冲输入流

/* BufferedInputStream继承了父类InputStream 字节缓冲输入流 继承父类成员方法 read()从输入流中读取数据的下一个字节 read(byte[] b)从输入流中读取一定数量的字节,将其存储在缓冲区数组b中 close()释放资源 构造方法: BufferedIntputStream(InputStream in)创建一个BufferedInputStream并保存其参数, 参数 InputStream in :字节输入流 传递FileInputStream,缓冲流会给FileInputStream增加一个缓冲区,提高读取效率 int size 指定缓冲流内部缓冲区大小 使用步骤 1、创建FileInputStream对象 ,确定读取的数据源 2、创建BufferedIntputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率 3、使用BufferedIntputStream对象的方法read,读取文件 4、释放资源 */


public class demo02BufferedInputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\IdeaProjects\basic-code\aaaa\qaw.txt");
BufferedInputStream bls = new BufferedInputStream(fis);
/*int len =0;
while((len = fis.read())!=-1){
System.out.println((char) len);
}*/
//使用数组缓冲 读取一定数量的字节
byte[] bytes =new byte[1024];//存储每次读取的数据
int len =0;//记录每次读取的有效字节个数
while ((len =fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
fis.close();
}
}
1.5缓冲区的效率测试

/* 使用缓冲流复制文件的步骤: 1、创建字节缓冲输入流对象 2、创建字节缓冲输出流对象 3、使用字节缓冲输入流对象的方法read 读取数据 4、使用字节缓冲流输出流对象的方法write 写入缓冲区 5、释放资源


*/


import java.io.*;
public class demo03Buffered {
public static void main(String[] args) throws IOException {
long s= System.currentTimeMillis();
BufferedInputStream bls = new BufferedInputStream(new FileInputStream("D:\IdeaProjects\basic-code\aaaa\qaq.jpg"));
BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream("D:\IdeaProjects\basic-code\aaaa\qaq\qaq.jpg"));
//使用数组缓冲读取多个字节
byte[] by = new byte[1024];
int len = 0;
while ((len=bls.read(by))!=-1){
bos.write(by,0,len);
}
/*int len = 0;
while((len= bls.read())!=-1){
bos.write(len);
}*/
bos.close();
bls.close();
long e = System.currentTimeMillis();
System.out.println(e-s+"耗时");
}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xxxjackboy/article/details/109757279

随机推荐

vue 对后台数据(json)进行排序

大多数情况下后端会将数据返回给我们想要的json格式,但是有些情况下可能刚开始数据没有排序,但是突然的甲方说这块数据要从大到小排序,后端改的话比较麻烦...

入门前端 阅读(919)

Shell学习笔记(四)

目录1、函数1.1系统函数1.2自定义函数2、Shell工具(一)2.1Cut2.2Sed1、函数1.1系统函数(1)basename基本语法b...

嚴 帅 阅读(787)

python定时器 循环_Python系列之循环定时器

近期在学习并使用Python开发一些小工具,在这里记录方便回忆,也与各位开始走上这条路的朋友共勉,如有不正确希望指正,谢谢!开始使...

weixin_39785081 阅读(113)