Java的字節(jié)緩沖流與字符緩沖流解析
更新時間:2023年11月01日 09:43:24 作者:追光而遇
這篇文章主要介紹了Java的字節(jié)緩沖流與字符緩沖流解析,Java 緩沖流是Java I/O庫中的一種流,用于提高讀寫數(shù)據(jù)的效率,它通過在內(nèi)存中創(chuàng)建緩沖區(qū)來減少與底層設(shè)備的直接交互次數(shù),從而減少了I/O操作的開銷,需要的朋友可以參考下
高級流
- 緩沖流
- 轉(zhuǎn)換流
- 序列化流
- 打印流
- 壓縮流
- Commons-io
緩沖流
基本流的效率太慢了,都加上緩沖區(qū)
字節(jié)緩沖流
原理:底層自帶了長度為8192的緩沖區(qū)提高性能
方法名稱 | 說明 |
public BufferedInputStream(InputStream is) | 把基本流包裝成高級流,提高讀取數(shù)據(jù)的性能 |
public BufferedOutputStream(OutputStream os) | 把基本流包裝成高級流,提高讀取數(shù)據(jù)的性能 |
練習(xí):拷貝文件
- 利用字節(jié)緩沖流拷貝文件(一次讀寫一個字節(jié))
public class BufferedStreamDemo1 { public static void main(String[] args) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("/Users/jessy/Desktop/offer50/aaa/aaa.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("/Users/jessy/Desktop/offer50/aaa/aaacopy.txt")); int b; while ((b = bis.read()) != -1) { bos.write(b); } bos.close(); bis.close(); } }
- 利用字節(jié)緩沖流拷貝文件(一次讀寫一個字節(jié)數(shù)組)
public class BufferedStreamDemo2 { public static void main(String[] args) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("/Users/jessy/Desktop/offer50/aaa/aaa.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("/Users/jessy/Desktop/offer50/aaa/aaacopy.txt")); byte[] bytes = new byte[1024]; int len; while ((len = bis.read(bytes)) != -1) { bos.write(bytes, 0, len); } bos.close(); bis.close(); } }
字節(jié)緩沖流提高效率的原理
字符緩沖流
原理:底層自帶了長度為8192的緩沖區(qū)提高性能
方法名稱 | 說明 |
public BufferedReader(Reader r) | 把基本流變成高級流 |
public BufferedWriter(Writer r) | 把基本流變成高級流 |
- 特有方法
字符緩沖輸入流特有方法 | 說明 |
public String readLine() | 讀取一行數(shù)據(jù),如果沒有數(shù)據(jù)可讀了,會返回null |
- 細節(jié):
- readLine方法在讀取的時候,一次讀一整行,遇到回車換行結(jié)束
- 但是他不會把回車換行讀到內(nèi)存當(dāng)中
字符緩沖輸出流特有方法 | 說明 |
public void newLine() | 跨平臺的換行 |
public class BufferedStreamDemo3 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader("/Users/jessy/Desktop/offer50/aaa/aaa.txt")); String line; while (((line = br.readLine()) != null)) { System.out.println(line); } br.close(); } }
public class BufferedStreamDemo4 { public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter("/Users/jessy/Desktop/offer50/aaa/b.txt", true)); bw.write("朵朵是貓貓呀!!"); //換行 bw.newLine(); bw.write("可是你不是貓貓!"); bw.newLine(); bw.close(); } }
總結(jié)
- 緩沖流有幾種?
- 字節(jié)緩沖輸入流 BufferedInputStream
- 字節(jié)緩沖輸出流 BufferedOutputStream
- 字符緩沖輸入流 BufferedReader
- 字符緩沖輸出流 BufferedWriter
- 緩沖流為什么能提高性能
- 緩沖自帶長度為8192的緩沖區(qū)
- 可以顯著提高字節(jié)流的讀寫性能
- 對于字符流提升不明顯,對于字符緩沖流而言關(guān)鍵點是兩個特有方法
- 字符緩沖流兩個特有方法是什么?
- 字符緩沖輸入流BufferedReader :readLine()
- 字符緩沖輸出流 BufferedWriter:newLine()
到此這篇關(guān)于Java的字節(jié)緩沖流與字符緩沖流解析的文章就介紹到這了,更多相關(guān)Java的字節(jié)字符緩沖流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決springboot項目找不到resources目錄下的資源問題
這篇文章主要介紹了解決springboot項目找不到resources目錄下的資源問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08