BufferedWniter_字元緩衝輸出流和BufferedReader_字元緩衝輸入流

2022-07-09 15:00:34

java.io.BufferedWriter extends Writer

BufferedWriter:字元緩衝輸出流

繼承自父類別的共性成員方法:
  -void write(int c)寫入單個字元

  -void write(char[] cbuf)寫入字元陣列

  -abstract void write(char[] cubf,int of ,int len)寫入字元陣列的某一部分,off陣列開始索引,len寫的字元個數

  -void write(String str)寫入字串

  -void write(String str,int off,int len)寫入字串的某一部分,off字串開始索引,len寫的字元個數

  -void flush()重新整理該流的緩衝

  -void close()關閉此流,但要先重新整理它

構造方法:

  BufferedWriter(Writer out) 建立一個使用預設大小輸出緩衝區的緩衝字元輸出流

  BufferedWriter(Writer out,int sz)建立一個使用給定大小輸出緩衝區的新緩衝字元輸出流

  引數:

    Writer out :輸出流

      我們可以傳遞FileWriter,緩衝流會給FileWriter增加一個緩衝區,提高FileWriter的寫入效率

    int sz:指定緩衝區的大小,不寫預設大小

特有的成員方法:

  void newLine() 寫一個行分隔符。會根據不同的作業系統,獲取不同的行分隔符

  換行:換行符號

  windows:\r\n

  linux:/n

  mac:/r

使用步驟:

  1.建立字元緩衝輸出流物件,構造方法中傳遞字元輸出流

  2.呼叫字元緩衝輸出流中的方法write,把資料寫入到記憶體緩衝區中

  3.呼叫字元緩衝輸出流中的方法flush,把記憶體緩衝區中的資料。重新整理到檔案中

  4.釋放資源

public class Demo03BufferedWriter {
        public static void main(String[] args) throws IOException {
//            System.out.println();  //newLine()
            //1.建立字元緩衝輸出流物件,構造方法中傳遞字元輸出流
            BufferedWriter bw = new BufferedWriter(new FileWriter("基礎語法\\c.txt"));
            //2.呼叫字元緩衝輸出流中的方法write,把資料寫入到記憶體緩衝區中
            for (int i = 0; i <10 ; i++) {
                bw.write("老王程式設計");
//                bw.write("\r\n");
                bw.newLine();
            }
            //3.呼叫字元緩衝輸出流中的方法flush,把記憶體緩衝區中的資料。重新整理到檔案中
            bw.flush();

            // 4.釋放資源
            bw.close();
        }
}

 

java.io.BufferedReader extends Reader

BufferedReader:字元緩衝輸入流

繼承自父類別的共性成員方法:

  int read() 讀取單個字元並返回

  int read(char[] cbuf)一次讀取多個字元,將字元讀入陣列

  void close() 關閉該流並釋放與之關聯的所有資源

構造方法:

  BufferedReader(Reader in) 建立一個使用預設大小輸入緩衝區的緩衝字元輸入流

  BufferedReader(Reader in, int sz) 建立一個使用指定大小輸入緩衝區的緩衝字元輸入流

  引數:

    Reader in:字元輸入流

      我們可以傳遞FileReader,緩衝流會給FileReader增加一個緩衝區,提高FileReader的讀取效率

  特有的成員方法:

    String readLine() 讀取一個文字行。讀取一行資料

      行的終止符號:通過下列字元之一即可認為某行已終止:換行 ('\n')、回車 ('\r') 或回車後直接跟著換行(\r\n)

  返回值:

    包含該行內容的字串,不包含任何行終止符,如果已到達流末尾,則返回 null

使用步驟:

  1.建立字元緩衝輸入流物件,構造方法中傳遞字元輸入流

  2.使用字元緩衝輸入流物件中的方法read/readLine讀取文字

  3.釋放資源

public class Demo04BufferedReader {
    public static void main(String[] args) throws IOException {
        //1.建立字元緩衝輸入流物件,構造方法中傳遞字元輸入流
        BufferedReader br = new BufferedReader(new FileReader("10_IO\\c.txt"));
 
        //2.使用字元緩衝輸入流物件中的方法read/readLine讀取文字
        /*String line = br.readLine();
        System.out.println(line);
        line = br.readLine();
        System.out.println(line);
        line = br.readLine();
        System.out.println(line);
        line = br.readLine();
        System.out.println(line);*/
 
        /*
            發下以上讀取是一個重複的過程,所以可以使用迴圈優化
            不知道檔案中有多少行資料,所以使用while迴圈
            while的結束條件,讀取到null結束
         */
        String line;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
 
        //3.釋放資源
        br.close();
    }
}