java--處理流、轉換流

圖片.png

緩沖流
1、緩沖流要套接在相應的節(jié)點流之上,對讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時增加了一些新的方法。
注:因為增加了韓緩沖,可以減少訪問硬盤的次數(shù),從而保護我們的硬盤。

提供了四種緩沖流。構造方法有:
BufferReader (Reader in)

BufferedReader(Reader in, int size) //size為自定義的緩存區(qū)的大小
BufferedWriter(Writer out)
BufferedWriter(Writer out, int size)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)

緩沖輸入流支持父類的mark和reset方法。。
BufferedReader提供了readLine方法用于讀取一行字符串(以\r或\n分隔)
BufferedWriter提供了newLine用于寫入一個新的行分隔符。
對于輸出的緩沖流,寫出的數(shù)據(jù)會現(xiàn)在內存中緩存,使用flush方法將會使內存中的數(shù)據(jù)立刻寫出。

關于關閉處理流:
寫了一個小程序,剛開始節(jié)點流和處理流都沒有關閉,然后本來要寫入文件的東西一個都沒有寫入。
后來寫了只是關閉節(jié)點流,然后要寫入文件的東西也是一個都沒有寫入。
最后只是關閉處理流,程序達到預期運行效果。
然后測試了一下既關閉節(jié)點流又關閉處理流,程序報錯


import java.io.*;

public class TestBufferedStream {

    public static void main(String[] args) {
        FileInputStream fis = null;
        BufferedInputStream bis = null;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        try {
            int c;
            fis = new FileInputStream("E:/java.txt");
            fos = new FileOutputStream("e:/java5.txt");
            bos = new BufferedOutputStream( fos );
            bis = new BufferedInputStream( fis );
            for ( int i = 0; i<100 && (c = bis.read()) != -1; i++) {
                //System.out.print((char)c + " ");
                bos.write((char)c);
            }
            //fis.close();
            //fos.close();
            bis.close();
            bos.close();
        }catch (FileNotFoundException e2) {
            e2.printStackTrace();
        }
        catch (IOException e1) {
            e1.printStackTrace();
        }
        File file = new File("E:/java5.txt");
        System.out.println(file.length());
    }

}

參考:http://www.cnblogs.com/byrhuangqiang/p/3924985.html
綜上:使用處理流最簡單的關閉方式是:
直接關閉處理流,而不用管與之相關聯(lián)的節(jié)點流。
因為再關閉處理流時會調用節(jié)點流的關閉函數(shù)。

InputStreamReader 把字節(jié)流轉換為字符流。
OutputStreamWriter 把字節(jié)流轉換為字符流。
這樣子可以直接寫字符串進入文件。也可以直接讀字符串。

將標準輸入流套接到轉換字符輸入流中,再將轉換字符流套接到緩沖流中。


import java.io.*;

public class TestTranFormReader {

    public static void main(String[] args) {
        InputStreamReader in = new InputStreamReader(System.in);
        BufferedReader bfr =new BufferedReader(in);
        String s = null;
        
        try{
            s = bfr.readLine();
            while (s != null) {
                System.out.println(s);
                s = bfr.readLine();
                if (s.equalsIgnoreCase("exit")) {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • # Java 流式輸入 輸出原理 # Java 流的分類 # 輸入 輸出 流 類 # 常見的節(jié)點流 和 處理流 #...
    時待吾閱讀 419評論 0 0
  • 1.流的分類 (1)輸入輸出流輸入輸出是針對程序運行的內存而言的輸入流的基類:InputStream,Reader...
    ql2012jz閱讀 623評論 0 3
  • # 3.1 File # ## 3.1.1 File基本概念 ## 1.基本概念 -File類用于表示文件(目錄)...
    閆子揚閱讀 559評論 0 0

友情鏈接更多精彩內容