java的io流相關類使用

InputStreamReader類與OutputStreamWriter類

InputStreamReader
將字節流轉換爲字符流。是字節流通向字符流的橋樑。如果不指定字符集編碼,該解碼過程將使用平臺默認的字符編碼,如:GBK。
構造方法:
InputStreamReader isr = new InputStreamReader(InputStream in);//構造一個默認編碼集的InputStreamReader類

InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//構造一個指定編碼集的InputStreamReader類。

參數 in(InputStream )對象獲得方法:

InputStream in = System.in;//讀取鍵盤上的數據。
InputStream in = new FileInputStream(String fileName);//讀取文件中的數據。

InputStreamReader 主要方法:

int read();//讀取單個字符。
int read(char []cbuf);//將讀取到的字符存到數組中。返回讀取的字符數。

例子:


    public static void main(String[] args) throws IOException {
        // 讀取字節流
        FileInputStream fis = new FileInputStream("d:\\ab.txt");
        // 將字節流向字符流的轉換。
        InputStreamReader isr = new InputStreamReader(fis);
        //創建字符流緩衝區 使用緩衝區 可以使用緩衝區對象的 read()
        //  和 readLine()方法。     
        BufferedReader bufr = new BufferedReader(isr);
        String line = null;
        while ((line = bufr.readLine()) != null) {
            System.out.println(line);
        }
        isr.close();
        } 

OutputStreamWriter 將字節流轉換爲字符流。是字節流通向字符流的橋樑。如果不指定字符集編碼,該解碼過程將使用平臺默認的字符編碼,如:GBK。

構造方法:

OutputStreamWriter osw = new OutputStreamWriter(OutputStream out);//構造一個默認編碼集的OutputStreamWriter類

OutputStreamWriter osw = new OutputStreamWriter(OutputStream out,String charsetName);//構造一個指定編碼集的OutputStreamWriter類。

參數對象(OutputStream)

InputStream out = System.out;獲得。//打印到控制檯上。
InputStream out = new FileoutputStream(String fileName);//輸出到文件中

主要方法:

        void write(int c);//將單個字符寫入。

        viod write(String str,int off,int len);//將字符串某部分寫入。

        void flush();//將該流中的緩衝數據刷到目的地中去。

例子:

    public static void main(String[] args) throws IOException {
        OutputStream out = new FileOutputStream("D:\\ab.txt");// 打印到文件。
        OutputStreamWriter osr = new OutputStreamWriter(out);// 輸出
        BufferedWriter bufw = new BufferedWriter(osr);// 緩衝
        String str = "你  ff 好嗎?\r\n我很好!";// 你好嗎?
        bufw.write(str);
        bufw.flush();
        bufw.close();
        osr.close();
        out.close();
    }

FileReader類與FileWriter類

1.FileWriter類(字符輸出流類)
繼承OutputStreamWriter
這裏寫圖片描述
構造方法:

   FileWriter fw = new FileWriter(String fileName);//創建字符輸出流類對象和已存在的文件相關聯。文件不存在的話,並創建。如 FileWriter fw = new FileWriter("C:\\demo.txt");
   FileWriter fw = new FileWriter(String fileName,boolean append);//創建字符輸出流類對象和已存在的文件相關聯,並設置該該流對文件的操作是否爲續寫。如:FileWriter fw = new  FileWriter("C:\\demo.txt",ture); //表示在fw對文件再次寫入時,會在該文件的結尾續寫,並不會覆蓋掉。

主要方法:

     void write(String str)   //寫入字符串。當執行完此方法後,字符數據還並沒有寫入到目的文件中去。此時字符數據會保存在緩衝區中。此時在使用刷新方法就可以使數據保存到目的文件中去。
     viod flush()                //刷新該流中的緩衝。將緩衝區中的字符數據保存到目的文件中去。
     viod close()               //關閉此流。在關閉前會先刷新此流的緩衝區。在關閉後,再寫入或者刷新的話,會拋IOException異常。

2.FileReader類
繼承InputStreamReader
這裏寫圖片描述
1,構造方法

FileReader fr = new FileReader(String fileName);//使用帶有指定文件的String參數的構造方法。創建該輸入流對象。並關聯源文件。

2,主要方法

int read(); // 讀取單個字符。返回作爲整數讀取的字符,如果已達到流末尾,則返回 -1。
int read(char []cbuf);//將字符讀入數組。返回讀取的字符數。如果已經到達尾部,則返回-1。
void close();//關閉此流對象。釋放與之關聯的所有資源。

FileReaderAndFileWriter例子

        // 複印
    public static void main(String[] args) throws IOException {
        FileReader fr = null;
        BufferedReader br = null;
        FileWriter fw = null;
        BufferedWriter bw = null;
        try {
            // 繼承InpuStreamReader
            fr = new FileReader("d:\\ab.txt");
            br = new BufferedReader(fr);
            // 需要加\n換行 ,printWriter不需要
            fw = new FileWriter("d:\\abnew.txt");
            bw = new BufferedWriter(fw);

            String one_line;
            while ((one_line = br.readLine()) != null) {
                // 注意加\n

                bw.write(one_line);
                bw.newLine();

            }

            bw.flush();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (bw != null) {
                bw.close();
            }
            if (fw != null) {
                fw.close();
            }
            if (br != null) {
                br.close();
            }
            if (fr != null) {
                fr.close();
            }
        }
    }
發佈了50 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章