缓冲流

缓冲流:提高IO流的读写速度  

  根据流的分类分类字节缓冲流与字符缓冲流

字节缓冲流

  写入数据到流中,字节缓冲输出流 BufferedOutputStream 

  读取流中的数据,字节缓冲输入流 BufferedInputStream

  利用字节缓冲流复制 文件 比字节流复制(大文件) 速度快

代码

package com.oracle.demo01;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo3 {

	public static void main(String[] args) throws IOException {
		//明确目的地
		FileOutputStream fos=new FileOutputStream("D:\demo1018\buffer.txt",true);
		//添加缓冲流
		BufferedOutputStream bos=new BufferedOutputStream(fos);
		/*//一个字节一个字节写
		bos.write(100);*/
		byte bytes[]={66,65,67,68};
		bos.write(bytes);
		//释放资源
		bos.close();

	}

}

package com.oracle.demo01;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class Demo4 {

	public static void main(String[] args) throws IOException {
		//明确数据源
		FileInputStream fis=new FileInputStream("D:\demo1018\buffer.txt");
		//添加缓冲流
		BufferedInputStream bis=new BufferedInputStream(fis);
		//一个字节一个读
		int len=0;
		while ((len=bis.read())!=-1) {
			System.out.println((char)len);
		}
		//释放资源
		bis.close();
	}

}

package com.oracle.demo01;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy {

	public static void main(String[] args) throws IOException {
		//明确数据源
		FileInputStream fis=new FileInputStream("D:\demo1018\buffer.txt");
		//明确目的地
		FileOutputStream fos=new FileOutputStream("D:\demo1018\a\buffer2.txt",true);
		//添加缓冲流
		BufferedInputStream bis=new BufferedInputStream(fis);
		BufferedOutputStream bos=new BufferedOutputStream(fos);
		/*单个复制
		int len=0;
		while ((len=bis.read())!=-1) {
			bos.write(len);
		}*/
		//字节数组复制
		byte bytes[]=new byte[1024];
		int len=0;
		while ((len=bis.read(bytes))!=-1) {
			bos.write(bytes,0,len);
		}
		//释放资源
		bis.close();
		bos.close();
		
	}

}

字符缓冲流 

  完成文本数据的高效的写入与读取的操作

字符缓冲输入流 BufferedReader   特殊方法  void newLine() 根据当前的系统,写入一个换行符

  

package com.oracle.demo02;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Demo1 {

	public static void main(String[] args) throws IOException {
		//名确目的地
		FileWriter fw=new FileWriter("D:\demo1018\buffer2.txt");
		//添加缓冲流
		BufferedWriter bw=new BufferedWriter(fw);
		//写一个字符
		bw.write(100);
		bw.flush();
		//写一个数组
		char ch[]={'你','好','啊'};
		bw.write(ch);
		bw.flush();
		//写入换行
		bw.newLine();
		bw.flush();
		//写一个字符串
		bw.write("我很好");
		//释放资源
		bw.close();
	}

}

  

字符缓冲输出流 BufferedWriter  特殊方法 public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

package com.oracle.demo02;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Demo02 {

	public static void main(String[] args) throws IOException {
		//名确数据源
		FileReader fr=new  FileReader("D:\demo1018\buffer2.txt");
		//添加缓冲流
		BufferedReader br=new BufferedReader(fr);
		//开始一行一行的读
		String line=null;
		while ((line=br.readLine())!=null) {
			System.out.println(line);
		}
		//释放资源
		br.close();
	}

}

使用字符缓冲流完成文本文件的复制

    1,指定数据源, 是数据源中读数据,采用输入流    2,指定目的地,是把数据写入目的地,采用输出流     3,读数据   4,写数据     5,关闭流

package com.oracle.demo02;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Copyzifuhuanchong {

	public static void main(String[] args) throws IOException {
		//明确数据源
		FileReader fr=new FileReader("D:\demo1018\buffer2.txt");
		//明确目的地
		FileWriter fw=new FileWriter("D:\demo1018\b\buffer2.txt");
		//添加缓冲流
		BufferedReader br=new BufferedReader(fr);
		BufferedWriter bw=new BufferedWriter(fw);
		//复制
		String line=null;
		while((line=br.readLine())!=null){
			bw.write(line);
			bw.newLine();
			bw.flush();
		}
		//释放资源
		br.close();
		bw.close();
	}

}

  

原文地址:https://www.cnblogs.com/zqy6666/p/12298416.html