java學習筆記(9)——IO系統 緩衝流

image.png

字節緩衝流

字節緩衝輸出流

java.io.BufferedOutputStream extends OutputStreamjava

image.png

構造方法:

BufferedOutputStream(OutputStream out):建立一個新的緩衝輸出流,將數據寫入指定的底層輸出流
BufferedOutputStream(OutputStream out, int size):

參數:
    OutputStream out:字節輸出流
    可傳遞FileOutputStream,緩衝流給FileOutputStream增長一個緩衝區,提升其寫入效率
    
    int size:指定緩衝流內部緩衝區大小

使用步驟(!!!)

  1. 建立FileOutputStream對象,構造方法中綁定輸出目的地
  2. 建立BufferedOutputStream對象,構造方法中傳遞FileOutputStream對象,提升FileOutputStream對象效率
  3. 使用BufferedOutputStream對象中write方法,將數據寫入到內部緩衝區
  4. 使用BufferedOutputStream對象中flush方法,把內部緩衝區的數據,刷新到文件中
  5. 釋放資源(先調用flush,再close)
public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("E:\\A JI\\program\\java\\g.txt");

        BufferedOutputStream bos = new BufferedOutputStream(fos);

        bos.write("把數據寫入緩衝區".getBytes());
        bos.flush();
        bos.close();
    }

字節緩衝輸入流

java.io.BufferedIntputStream extends InputStreamspa

image.png

構造方法:

BufferedInputStream(InputStream in):建立一個新的緩衝輸入流,將數據寫入指定的底層輸出流
BufferedInputStream(InputStream in, int size):

參數:
    InputStream in:字節輸出流
    可傳遞FileInputStream,緩衝流給FileInputStream增長一個緩衝區,提升其讀取效率
    
    int size:指定緩衝流內部緩衝區大小

使用步驟(!!!)

  1. 建立FileInputStream對象,構造方法中綁定要讀取的數據源
  2. 建立BufferedInputStream對象,構造方法中傳遞FileInputStream對象,提升FileInputStream對象讀取效率
  3. 使用BufferedInputStream對象中read方法,讀取文件
  4. 釋放資源
public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("E:\\A JI\\program\\java\\g.txt");

        BufferedInputStream bis = new BufferedInputStream(fis);

        byte[] bytes = new byte[1024];
        int len = 0;
        while((len = bis.read(bytes)) != -1) {
            System.out.println(new String(bytes, 0, len));
        }
        bis.close();
    }

字符緩衝流

字符緩衝輸出流

java.io.BufferedWriter extends Writer操作系統

image.png

構造方法:

BufferedWriter(Writer out):建立一個新的緩衝字符輸出流
BufferedWriter(Writer out, int size):

參數:
    Writer out:字符輸出流
    可傳遞FileWriter,緩衝流給FileWriter增長一個緩衝區,提升其寫入效率
    
    int size:指定緩衝流內部緩衝區大小

特有成員方法:

void newLine():寫入一個行分隔符,會自動根據不一樣的操做系統,獲取不一樣的航分隔符code

使用步驟(!!!)

  1. 建立字符緩衝輸出流對象,構造方法中傳遞字符輸出流
  2. 使用BufferedWriter對象中write方法,將數據寫入到內部緩衝區
  3. 使用BufferedWriter對象中flush方法,把內部緩衝區的數據,刷新到文件中
  4. 釋放資源
public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\A JI\\program\\java\\g.txt"));

        for (int i = 0; i < 10; i++) {
            bw.write("123");
            bw.newLine();
        }

        bw.flush();
        bw.close();
    }

字符緩衝輸入流

java.io.BufferedReader extends Reader對象

image.png

構造方法:

BufferedReader(Reader in):建立一個新的緩衝字符輸入流
BufferedReader(Reader in, int size):

參數:
    Reader in:字節輸出流
    可傳遞FileReader,緩衝流給FileReader增長一個緩衝區,提升其讀取效率
    
    int size:指定緩衝流內部緩衝區大小

特有的成員方法:

String readLine():讀取數據的 行 終止符號blog

返回值:
    包括該行內容的字符串,不包含任何**行終止符**,若到達流末尾,**則返回null**(while條件此處有變化)

使用步驟(!!!)

  1. 建立FileReader對象,構造方法中綁定要讀取的數據源
  2. 建立BufferedReader對象,構造方法中傳遞FileReader對象,提升FileReader對象讀取效率
  3. 使用BufferedReader對象中read/readLine方法,讀取文件
  4. 釋放資源
public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("E:\\A JI\\program\\java\\g.txt"));

        String line;
        while((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }

案例

文本排序!!!!
image.png排序

public static void main(String[] args) throws IOException {
        HashMap<String, String> map = new HashMap<>();

        BufferedReader br = new BufferedReader(new FileReader("E:\\A JI\\program\\java\\g.txt"));

        BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\A JI\\program\\java\\out.txt"));
        //使用readLine,逐行讀取文本
        String line;
        while((line = br.readLine()) != null) {
            //對文本進行切割,能夠根據 . 來切割
            //  . 是一個轉義字符,須要兩個\表示一個普通的 .
            String[] arr = line.split("\\.");
            //將切割好的序號和文本內容存儲到HashMap中,key序號有序,會自動排序
            map.put(arr[0], arr[1]);
        }

        //遍歷HashMap,獲取每個鍵值對
        for (String key : map.keySet()) {
            String value = map.get(key);
            //把每個鍵值對,拼接成一個文本行
            line = key + "." + value;
            //將拼接好的文本,寫入文件
            bw.write(line);
            bw.newLine(); //寫一個換行
        }

        bw.flush();
        bw.close();
    }
相關文章
相關標籤/搜索