BufferStream 缓存流
BufferedInputStream
bufferedReader底层有自己维护的缓存区(下面的小案例就是使用bufferreader默认的缓存区)
package com.iopractise; import java.io.*; /** * 使用字节缓存流读取 */ public class Demo05 { public static void main(String[] args) throws IOException { // 1 创建 FileInputStream fileInputStream = new FileInputStream("d:\\aaa.txt");//也叫做节点流或基础流 BufferedInputStream bufferedReader = new BufferedInputStream(fileInputStream); //2.读取 int data=0; while ((data=bufferedReader.read())!=-1){ System.out.print((char)data); } //3.关闭资源 bufferedReader.close();//在关闭bufferReader的时候也就相当于将fileinputstream流关闭了 System.out.println("\n执行完毕"); } }
当然,我们也可以自己构建缓存区
package com.iopractise; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /** * 使用字节缓存流读取 我们自己构建缓存区 */ public class Demo06 { public static void main(String[] args) throws IOException { // 1 创建 FileInputStream fileInputStream = new FileInputStream("d:\\aaa.txt");//也叫做节点流或基础流 BufferedInputStream bufferedReader = new BufferedInputStream(fileInputStream); //2.读取 byte[] buff = new byte[1024]; int count=0; while ((count=bufferedReader.read(buff))!=-1){ System.out.print(new String(buff,0,count)); } //3.关闭资源 bufferedReader.close();//在关闭bufferReader的时候也就相当于将fileinputstream流关闭了 System.out.println("\n执行完毕"); } }
BufferedOutputStream
使用字节缓存输出流将数据写出到文件中
package com.iopractise; import com.sun.media.sound.SoftTuning; import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * 使用字节缓存输出流将数据写出到文件中 */ public class Demo07 { public static void main(String[] args) throws IOException { //1.创建字节缓存输出流 FileOutputStream fileOutputStream = new FileOutputStream("d:\\buffer.txt"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); //2.写入文件 for (int i=0;i<10;i++) { //这里不管使用\r或者\n最终都是能够实现换行的效果的。 bufferedOutputStream.write("helloworld\r".getBytes());//如果数据小于8k,如果不调用flush()方法的话,是不会写入到文件中的 bufferedOutputStream.flush();//这样写虽然效率低了,但是能够尽量防止因为断电原因造成的缓存区的数据没有写入到磁盘中 } //3.关闭资源 bufferedOutputStream.close();//关闭了bufferedOutputStream也就相当于将fileOutputStream关闭了 //close() 方法执行完毕之后,其实底层也是会调用flush()方法,缓存中的数据刷新到磁盘中。 System.out.println("执行完毕"); } }