Java IO 4個Buffed的緩衝頂級類(比如bufferedInputStream)的 總結教程

原理:Buffered的原理和之前數組增加複製圖片速度的原理一致點擊查看

在這裏插入圖片描述

一、bufferedInputStream,bufferedOutputStream,

1.總結

  • 一、原理,讀取單個字節太慢,5000毫秒
  • 我們用一個數組來代替很快 0毫秒就可以,Buffer就是一個默認長度的數組.
  • 二、BufferInputStream extends InputStream.繼承所有方法使用方法一致
  • 三、構造
  • new BufferInputStream(InputStream inputStream,int size)
  • size 不寫就是默認
  • 四、步驟
  • 1.new 讀in和寫Out的流
  • 2.new 讀寫的緩衝流
  • 3.再加字節數組雙倍快樂
  • 4.如果不是-1讀in出來,複製out出來.

2.code

package Java學習.Java高級.IO.Buffer4大頂級IO類的緩衝類.BufferInputStream和BufferOutputStream;

import java.io.*;

/**
 * 一、原理,讀取單個字節太慢,5000毫秒
 * 我們用一個數組來代替很快 0毫秒就可以,Buffer就是一個默認長度的數組.
 * 二、BufferInputStream extends InputStream.繼承所有方法使用方法一致
 * 三、構造
 * new BufferInputStream(InputStream inputStream,int size)
 * size 不寫就是默認
 * 四、步驟
 * 1.new 讀in和寫Out的流
 * 2.new 讀寫的緩衝流
 * 3.再加字節數組雙倍快樂
 * 4.如果不是-1讀in出來,複製out出來.
 */
public class Main {
    public static void main(String[] args) throws IOException {
        String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習\\Java高級\\IO\\Buffer" +
                "4大頂級IO類的緩衝類\\BufferInputStream和BufferOutputStream\\";
        //1,
        FileInputStream fileInputStream = new FileInputStream(url + "img.png");
        FileOutputStream fileOutputStream = new FileOutputStream(url + "使用Buffer緩衝複製很快.png");
        //2.
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
        //3.
        byte[] bytes = new byte[1024*100];
        //4.
        long startTime = System.currentTimeMillis();
        while (bufferedInputStream.read(bytes,0,bytes.length)!= -1){//如果還有數據
            bufferedOutputStream.write(bytes,0,bytes.length);
        }
        bufferedOutputStream.flush();//刷新
        bufferedOutputStream.close();//關閉寫,其實Buffer可以在關閉時候自動刷新了。
        bufferedInputStream.close();//關閉讀
        System.out.println("複製800KB用時:"+(System.currentTimeMillis()-startTime)+" 毫秒");
        System.out.println("多次測試得知緩衝默認size或者數組[1024]越大,複製越快");
    }
}

Run:
複製800KB用時:1 毫秒
多次測試得知緩衝默認size或者數組[1024]越大,複製越快

Process finished with exit code 0

二、,BufferedReader,BufferWriter字符

package Java學習.Java高級.IO.Buffer4大頂級IO類的緩衝類.BufferReader和BufferWriter;

import java.io.*;

/**
 * @BufferWriter有一個新的方法newLine換行
 * 類似BufferInputStream 詳情看之前BufferInputStream的代碼
 *  * 一、步驟
 *  1.new FileWriter 寫
 *  2.new Buffer 寫
 *  3.用 buffer的write("faff")寫入文件
 *  4.刷新
 *  5.關閉
 *  二、讀取
 *  1.new Reader
 *  2.new Buffer讀取
 *  3.如果讀取不爲空,循環連續讀取
 *  4.關閉
 */
public class Main {
    public static void main(String[] args) throws IOException {
        String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習\\Java高級\\IO\\Buffer4大頂" +
                "級IO類的緩衝類\\BufferReader和BufferWriter\\";
        System.out.println("--------1.buffer寫-----------------");
        //1.
        FileWriter fileWriter = new FileWriter(url + "嫌疑人.txt");
        //2.
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        //3.
        for (int i = 0; i < 10; i++) {
            bufferedWriter.write("第"+i+"個字符串");
            bufferedWriter.newLine();//新的newLine()方法換行
        }
        //4.刷新
        bufferedWriter.flush();
        //5.close()
        bufferedWriter.close();
        System.out.println("----------------2.Buffer讀取---------");
        //1
        FileReader fileReader = new FileReader(url + "嫌疑人.txt");
        //2.
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        //3,輸出
        char[] chars = new char[1024];
        while (bufferedReader.read(chars,0,chars.length)!=- 1){
            System.out.println(chars);
        }
        //close
        bufferedReader.close();
        System.out.println("----------readLine()方法讀一行-----------.");
        fileReader = new FileReader(url + "嫌疑人.txt");//Buffer
        BufferedReader bufferedReader1 = new BufferedReader(fileReader);
        String line;
        while ((line = bufferedReader1.readLine()) != null){
            System.out.println(line);
        }

    }
}

Run:
--------1.buffer寫-----------------
----------------2.Buffer讀取---------
第0個字符串
第1個字符串
第2個字符串
第3個字符串
第4個字符串
第5個字符串
第6個字符串
第7個字符串
第8個字符串
第9個字符串

----------readLine()方法讀一行-----------.
第0個字符串
第1個字符串
第2個字符串
第3個字符串
第4個字符串
第5個字符串
第6個字符串
第7個字符串
第8個字符串
第9個字符串

Process finished with exit code 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章