1. 程式人生 > >緩衝字元流BufferedReader和BufferedWriter

緩衝字元流BufferedReader和BufferedWriter

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

/**
 * 功能:通過按行讀取實現檔案複製
 * 
 * 思路1:使用位元組流還是字元流
 *         使用字元流,對於位元組流沒有行的概念
 * 
 * 思路2:使用節點流還是處理流
 *         使用處理流
 *         節點流只提供了兩種讀寫的方式
 *         1個位元組 或者1個位元組陣列
 * 
 * BufferedReader和BufferedWriter
 * 好處1:提高了效能
 * 好處2:簡化了操作


 * 
 * 注意1:readLine()的底層原理
 *     底層其實還是read(),遇到換行符,轉換成字串
 * 
 * 
 * 注意2:newLine()的底層原理
 *     不同的作業系統中換行符是不同的
 *     window
 *  linux
 *  mac
 *     (2)Windows系統裡面,每行結尾是 回車+換行(CR+LF),即“\r\n”;
(3)Unix系統裡,每行結尾只有 換行CR,即“\n”;
(4)Mac系統裡,每行結尾是 回車CR 即'\r'。

 * @author Administrator
 *
 */
public class TestCopy {

    public static void main(String[] args) throws IOException {
        //建立輸入流和輸出流
        BufferedReader br = new BufferedReader(new FileReader(new File("e:/log.txt")));
        BufferedWriter bw = new BufferedWriter(new FileWriter("e:/log2.txt"));
        //使用輸入流和輸出流
        String str = br.readLine();
        while(str != null){
            //寫一行
            bw.write(str);//只負責寫,沒有換行
            bw.newLine();//新增一個換行符
            //System.out.println();
            //bw.write("\r");
            //再讀一行
            str = br.readLine();
        }        
        //關閉輸入流和輸出流
        br.close();
        bw.close();

    }

}