字节缓冲输出流和字节缓冲输入流以及缓冲流的测试
作者:互联网
BufferedOutputStream—字节缓冲输出流
java.io.BufferedOutputStream extends OutputStream
继承自父类的共性方法:
public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
public void write(byte[] b ) :将b.length字节从指定的字节数组写入此输出流。
public void write(byte[] b,int off,int len) :从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
public abstract void write(int b) :将指定的字节输出流。
构造方法:
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流
参数:
OutputStream out:字节输出流
我们可以传递FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区,提高FileOutputStream的写入效率
int size :指定缓冲流内部缓冲区的大小,不指定默认
使用步骤:
1.创建FileOutputStream对象,构造方法中绑定要输出的目的地
2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率
3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中
4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中
5.释放资源(会先调用flush方法刷新数据,第4步可以省略)
public static void main(String[] args) throws IOException { //1.创建FileOutputStream对象,构造方法中绑定要输出的目的地 FileOutputStream fos = new FileOutputStream("a.txt"); //2.创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率 BufferedOutputStream bos = new BufferedOutputStream(fos); //3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中 bos.write("通过缓冲区写入".getBytes()); //4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中 // bos.flush(); //5.释放资源(会先调用flush方法刷新数据,第4步可以省略) bos.close(); }
文件中的内容:
BufferedInputStream—字节缓冲输入流
java.io.BufferedInputStream extends InputStream
继承自父类的成员方法:
int read()从输入流中读取数据的第一个字节。
int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
void close() 关闭此输入流并释放与该流关联的所有系统资源。
构造方法
BufferedInputStream(InputStream in)创建一个BufferedInputStream并保存其参数,即输入流in,以便将来使用
BufferedInputStream(InputStream in,int size)创建具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流in,以便将来使用
参数:
InputStream in :字节输入流
我们可以传递FileInputStream,缓冲流会给FileInputStream增加一个缓冲区,提高FileInputStream的读取效率
int size:指定缓冲流内部缓冲区大小,不指定默认
使用步骤:
1.创建FileInputStream对象,构造方法中绑定要读取的数据源
2.创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率
3.使用BufferedInputStream对象中的方法read,读取文件
4.释放资源
public static void main(String[] args) throws IOException { //1.创建FileInputStream对象,构造方法中绑定要读取的数据源 FileInputStream fis = new FileInputStream("a.txt"); //2.创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率 BufferedInputStream bis = new BufferedInputStream(fis); //3.使用BufferedInputStream对象中的方法read,读取文件 // int i; // while ((i=bis.read())!=-1){ // System.out.println(i); // } //int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 byte[] bytes = new byte[1024]; int i; while ((i=bis.read(bytes))!=-1){ System.out.println(new String(bytes,0,i)); } //4.释放资源 bis.close(); }
打印结果:
缓冲流的效率测试—复制文件
文件复制练习:一读一写
文件复制的步骤:
1、创建字节缓冲输入流对象,构造方法中传递字节输入流
2、创建字节缓冲输出流对象,构造方法中传递字节输出流
3、使用字节缓冲输入流对象中的方法read,读取文件
4、使用字节缓冲输出流对象中的方法write,把读取的数据写入到内部缓冲区中
5、释放资源(会先把缓冲区中的数据,刷新到文件中)
public static void main(String[] args) throws IOException { long s = System.currentTimeMillis(); //1、创建字节缓冲输入流对象,构造方法中传递字节输入流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\\111.png")); //2、创建字节缓冲输出流对象,构造方法中传递字节输出流 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.png")); //3、使用字节缓冲输入流对象中的方法read,读取文件 // int i; // while ((i=bis.read())!=-1){ // //4、使用字节缓冲输出流对象中的方法write,把读取的数据写入到内部缓冲区中 // bos.write(i); // } byte[] bytes = new byte[1024]; int i; while ((i=bis.read(bytes))!=-1){ //4、使用字节缓冲输出流对象中的方法write,把读取的数据写入到内部缓冲区中 bos.write(bytes,0,1); } //5、释放资源(会先把缓冲区中的数据,刷新到文件中) bis.close(); bos.close(); long e = System.currentTimeMillis(); System.out.println("文件复制共耗时:"+(e-s)+"毫秒"); }
耗时:
标签:字节,构造方法,对象,缓冲,BufferedInputStream,测试,缓冲区 来源: https://www.cnblogs.com/xjw12345/p/16489243.html