1.IO緩沖流:
之前我們學習的都是原始流(FileInputStream字節輸入流、FileOutputStream字節輸出流、FIleReader字符輸入流、FIleWriter字符輸出流)其實我們可以知道對于這些其實性能都不是很好,要么太慢一個一個,要么就是創建buffer數組占內存,因此我們需要對其進行性能的提升!
1.1字節緩沖流
為什么緩沖就可以提高性能,下面我通過圖進行詳細的介紹!!!【這類學要注意就是緩沖輸入輸出流是沒有能力進行輸入輸出的,就就好比是一個水龍頭套子,他是依附于原始的字節輸入輸出流的!】
1.1.1字節緩沖輸入流、字節緩沖輸出流
package IoByteDemo;import java.io.*;public class Test06 {public static void main(String[] args) {try(//創建輸入管道InputStream fileInputStream = new FileInputStream("src\\IoByteDemo\\img.png");//包裝一個套子,緩沖輸出流BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);//創建輸出管道OutputStream fileOutputStream = new FileOutputStream("src\\IoByteDemo\\img3.png");//包裝一個套子,緩沖輸出流BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);) {//首先我們創建一個1kb的字節數組byte[] buffer = new byte[4];//然后進行循環int len;while ((len = bufferedInputStream.read(buffer)) != -1){bufferedOutputStream.write(buffer,0,len);}} catch (Exception e) {throw new RuntimeException(e);}}
}
1.1.2字符緩沖輸入流和字符緩沖輸出流
package IoCharDemo;import java.io.*;public class Test04 {public static void main(String[] args) {try (//創建字符輸入流FileReader fileReader = new FileReader("src\\IoCharDemo\\note03.txt");//再創建緩沖字符輸入流BufferedReader bufferedReader = new BufferedReader(fileReader);//創建字符輸出流FileWriter fileWriter = new FileWriter("src\\IoCharDemo\\note04.txt");BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);){
// //對于緩沖輸入流進行讀行操作!
// while (bufferedReader.readLine() != null){
// System.out.println(bufferedReader.readLine());
// }//開始進行復制//創建一個1024數組char[] buffer = new char[1024];//設置長度int len;while ((len = bufferedReader.read(buffer)) != -1){bufferedWriter.write(buffer,0,len);}System.out.println("賦值完成");}catch (Exception e){System.out.println("異常!");}}
}
總結:(如何提高字節讀寫數據的性能)
1.使用緩沖輸入輸出流,提高效率!
2.在內存進行容量更大的數據進行存儲new byte[1024*n]適可而止
3.上述兩者結合起來效果更好!