BufferInputStream、BufferOutputStream、BufferedReader、BufferedWriter、Java代码使用BufferedReader和BufferedWriter实现文本文件的拷贝
BufferInputStream和BufferOutputStream的特点:
缓冲字节输入输出流,缓冲流是处理流,它不直接连接数据源/目的地,而是以一个字节流为参数,在节点流的基础上提供一些简单操作。
先说不带缓冲流的工作原理吧,它读取到一个字节/字符,就向用户指定的路径写出去,读一个写一个,所以就慢了,带缓冲流的工作原理,读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次写出去,从而提高了工作效率。
优点:减少对硬盘的读取次数,降低对硬盘的损耗。
附:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
/**
 * 使用BufferedReader和BufferedWriter实现文本文件的拷贝
 * @author Administrator
 *
 */
public class BufferOperateStr {
	public static void main(String[] args) {
		copy();
	}
	static void copy(){
		Reader reader = null;
		BufferedReader br = null;
		Writer writer = null;
		BufferedWriter bw = null;
		try {
			//第一部分:准备从文件读数据到程序
			reader = new FileReader(new File("d://a.txt"));
			//创建缓冲流包装对象reader
		    br = new BufferedReader(reader);
			//第二部分:准备从程序写到文件;创建写入对象writer
			writer = new FileWriter(new File("d:\\a3.txt"));
			//创建缓冲流包装writer
			bw = new BufferedWriter(writer);
			String str = null;
			//用循环边读边写
			while((str=br.readLine())!=null){
				bw.write(str);
				bw.newLine();
			}
			bw.flush();  //清空缓冲区
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
				try {
					if (bw!=null) {
					bw.close();
					}
					if (br!=null) {
						br.close();
					}	
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号