天天看點

java io流03 字元流

1. 字元流

  字元流是以Reader和Writer為基礎派生的一系列類

2. 字元輸入流FileReader

  FileReader構造方法

public class FileReader extends InputStreamReader    //繼承InputStreamReader

public FileReader(String fileName)    //建立一個指定檔案名的字元輸入流

public FileReader(File file)    //建立一個指定檔案對象的字元輸入流

public FileReader(FileDescriptor fd)    //建立一個指定檔案描述符的字元輸入流      

  

  FileReader執行個體(讀取字元,隻能讀取文本檔案)

public static void main(String[] args){
        FileReader fr = null;
        
        try{
            fr = new FileReader("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp.txt");
            char[] chars = new char[4];
            int readData = 0;
            while((readData = fr.read(chars))!=-1){
                System.out.print(new String(chars,0,readData));
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(fr != null){
                try{
                    fr.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }
    }      

3. 字元輸出流FileWriter

  FileWriter構造方法

public class FileWriter extends OutputStreamWriter    //繼承OutputStreamWriter

public FileWriter(String fileName)    //建立一個指定檔案名的字元輸出流

public FileWriter(String fileName, boolean append)    //是否追加

public FileWriter(File file)    //建立也給指定檔案對象的字元輸出流

public FileWriter(File file, boolean append)    //是否追加

public FileWriter(FileDescriptor fd)    //指定字元描述符

public FileWriter(String fileName, Charset charset)    //建立一個使用命名字元集的字元輸出流

public FileWriter(String fileName, Charset charset, boolean append)    //是否追加

public FileWriter(File file, Charset charset)    //使用命名字元集

public FileWriter(File file, Charset charset, boolean append)    //是否追加      

  FileWriter執行個體

public class FileWriterTest01{
    public static void main(String[] args){
        FileWriter fw = null;
        
        try{
            fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp01.txt",true);
            char[] chars = {'奧','運','會'};
            fw.write(chars);
            fw.write(chars,1,2);    //可以寫入指定長度字元
            fw.write("helloworld");     //可以直接寫入字元串
            fw.write("hellojava");
            fw.flush();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(fw!=null){
                try{
                    fw.close();
            }catch(Exception e){
                e.printStackTrace();
            }
            }
        }
    }
}      

  使用FileReader和FileWriter進行文本檔案的拷貝(隻能拷貝普遍文本檔案)

public class CopyTest02{
    public static void main(String[] args){
        FileReader fr = null;
        FileWriter fw = null;
        
        try{
            fr = new FileReader("D:\\JavaProject\\chapter19.iml");
            fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
            char[] chars = new char[1024*512];
            int readData = 0;
            while((readData = fr.read(chars)) != -1){
                fw.write(chars,0,readData);
            }
            fw.flush();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(fw != null){
                try{
                    fw.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if(fr != null){
                try{
                    fr.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}      

4. 字元緩沖輸入流BufferedReader

  BufferedReader是緩沖字元輸入流,為其他字元輸入流添加緩沖功能。  

  BufferedReader構造方法

public class BufferedReader extends Reader    //繼承Reader

public BufferedReader(Reader in, int sz)    //建立指定大小輸入緩沖區的緩沖字元輸入流

public BufferedReader(Reader in)    //建立預設大小輸入緩沖區的緩沖字元輸入流      

  BufferedReader執行個體

public class BufferedReaderTest01{
    public static void main(String[] args) throws IOException{
        FileReader fr = new FileReader("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
        BufferedReader br = new BufferedReader(fr);    //需要傳入一個字元流
        
    /*    String strLine1 = br.readLine();    //可以直接讀取一行
        System.out.println(strLine1);
        
        String strLine2 = br.readLine();
        System.out.println(strLine2);  */
        
        String strLine = null;
        while((strLine = br.readLine())!=null){
            System.out.println(strLine);
        }
        br.close();   //隻需關閉緩沖流,因為在源碼中已經關閉了字元流
    }
}      

5. 字元緩沖輸出流BufferedWriter

  BufferedWriter是緩沖字元輸出流,為其他字元輸出流添加緩沖功能。

  BufferedWriter構造方法

public class BufferedWriter extends Writer    //繼承Writer

public BufferedWriter(Writer out)    //建立預設大小的緩沖字元輸出流
 
public BufferedWriter(Writer out, int sz)    //建立指定大小的緩沖字元輸出流      

  BufferedWriter執行個體

public class BufferedWriterTest01{
    public static void main(String[] args) throws IOException{
        FileWriter fw = new FileWriter("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp04.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write("hello world");
        bw.write("hello java");
        bw.flush();
        bw.close();
    }
}      

6. 轉換流InputStreamReader

  InputStreamReader作用是将位元組輸入流轉換為字元輸入流,繼承Reader。

  InputStreamReader執行個體

public class InputStreamReaderTest01{
    public static void main(String[] args) throws IOException{
        
    /*    FileInputStream fis = new FileInputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml");
        InputStreamReader isr = new InputStreamReader(fis);    //BufferedReader使用字元流作為參數,是以要轉換
        BufferedReader br = new BufferedReader(isr);    //參數要傳入一個字元流    */
        
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\chapter19.iml")));    //以上三行可以寫到一塊
        String strLine = null;
        while((strLine = br.readLine()) != null){
            System.out.println(strLine);
        }
        br.close();
    } 
}      

7. 轉換流OutputStreamWriter

public class OutputStreamWriterTest01{
    public static void main(String[] args) throws IOException{
        
    /*    FileOutputStream fos = new FileOutputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp05.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        BufferedWriter bw = new BufferedWriter(osw);  */
        
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\THINK\\Desktop\\JavaTest\\Temp05.txt",true)));
        
        bw.write("hello java");
        bw.write("hello olympic");
        bw.flush();
        bw.close();
    }
}      
上一篇: 字元緩存流
下一篇: Junit技巧