FileReader中使用read(char[] cbuf)讀入數據

package csdn.java3;
/**
*
* 一、流的分類:
* 1.操作數據單位:字節流、字符流
* 2.數據的流向:輸入流、輸出流
* 3.流的角色:節點流、處理流
*
* 二、流的體系結構
* 抽象基類        節點流(或文件流)                              緩衝流(處理流的一種)
* InputStream     FileInputStream   (read(byte[] buffer))        BufferedInputStream (read(byte[] buffer))
* OutputStream    FileOutputStream  (write(byte[] buffer,0,len)  BufferedOutputStream (write(byte[] buffer,0,len) / flush()
* Reader          FileReader (read(char[] cbuf))                 BufferedReader (read(char[] cbuf) / readLine())
* Writer          FileWriter (write(char[] cbuf,0,len)           BufferedWriter (write(char[] cbuf,0,len) / flush()
*
*
*/

import java.io.*;

import org.junit.Test;

public class FileReaderWriterTest {
	
	
    //對read()操作升級:使用read的重載方法
    @Test
    public void testFileReader1()  {
        FileReader fr = null;
        try {
            //1.File類的實例化
            File file = new File("D:\\eclipse-workspace\\csdn\\src\\csdn\\java3\\hello.txt");

            //2.FileReader流的實例化
            fr = new FileReader(file);

            //3.讀入的操作
            //read(char[] cbuf):返回每次讀入cbuf數組中的字符的個數。如果達到文件末尾,返回-1
            char[] cbuf = new char[5];
            int len;
            while((len = fr.read(cbuf)) != -1){
                //方式一:
                //錯誤的寫法,難點!
                /*for(int i = 0;i < cbuf.length;i++){
                    System.out.print(cbuf[i]);
                }*/
            	
            	
                //正確的寫法
                for(int i = 0;i < len;i++){
                    System.out.print(cbuf[i]);
                }
                
                //-----------------------------------------------------
                //方式二:
                //錯誤的寫法,對應着方式一的錯誤的寫法
                String str = new String(cbuf);
                System.out.print(str);
                
                //正確的寫法
                String str1 = new String(cbuf,0,len);
                System.out.print(str1);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fr != null){
                //4.資源的關閉
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }
	
	
	
	

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章