1. 程式人生 > >轉換流InputStreamReader和OutputStreamWriter

轉換流InputStreamReader和OutputStreamWriter

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

/**
 * 功能:將從鍵盤輸入的一行行資料複製到一個檔案中

 * @author Administrator
 *
 */

public class TestCopy {

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

    }

}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

/**
 *功能:將從鍵盤輸入的一行行資料複製到一個檔案中
 * 
 * 
 * 轉換流
 * 
 * 
 * 1.生活案例
 *  System.in     -----------轉換流 -----------  Reader  ---------- BufferedReader(readLine())
 *  三相插頭        -----------(三相的插座)轉換頭(兩相插頭)-----------  兩相插座
 *  介面卡模式(轉換器模式)
 *  
 * 2.Java中提供了哪些轉換流
 *      InputStreamReader  將InputStream轉換成Reader
 *      OutputStreamWriter 將 OutputStream轉換成Writer
 *      ReaderInputStream 沒有
 *   WriterOutputStream 沒有
 *   只有將位元組流轉換成字元流的轉換流
 *   
 * 3.InputStreamReader到底是Reader還是InputStream
 *     InputStreamReader是Reader的一個子類陳
 *   Reader reader = new InputStreamReader(is);
        public class InputStreamReader extends Reader {
        
        }
 * 4.標準輸入輸出裝置
 *     System.in :鍵盤
 *  System.out:顯示器
 *     System.err:顯示器
 * 
 * @author Administrator
 *
 */


public class TestCopy2 {

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

    }

}