緩衝流也叫高效流,可以更高效的進行讀取;
轉換流:可以進行編碼轉換
序列化流:持久化存儲對象git
緩衝流--就是對應4個File**** 流的加強流
字節緩衝流:BufferedInputStream,BufferedOutputStream
字符緩衝流:BufferedReader,BufferedWritergithub
緩衝流在建立流對象時,會建立一個內置的默認大小的緩衝區數組,經過緩衝區的讀寫,減小系統IO次數,從而提升讀寫的效率數組
構造方法測試
BufferedInputStream(InputStream in)
建立一個 BufferedInputStream並保存其參數,輸入流 in ,供之後使用。
BufferedInputStream(InputStream in, int size)
建立 BufferedInputStream具備指定緩衝區大小,並保存其參數,輸入流 in ,供之後使用。編碼
BufferedInputStream 的方法code
int available()
返回從該輸入流中能夠讀取(或跳過)的字節數的估計值,而不會被下一次調用此輸入流的方法阻塞。
void close()
關閉此輸入流並釋放與流相關聯的任何系統資源。
void mark(int readlimit)
見的總承包 mark的方法 InputStream 。
boolean markSupported()
測試這個輸入流是否支持 mark和 reset方法。
int read()
見 read法 InputStream的通常合同。
int read(byte[] b, int off, int len)
從給定的偏移開始,將字節輸入流中的字節讀入指定的字節數組。
void reset()
見 reset法 InputStream的通常合同。
long skip(long n)
見 skip法 InputStream的通常合同。對象
示例:繼承
/** * bufferedInputStream的使用步驟 * 1.建立bufferedInputStream對象,並在構造方法中傳入InputStream * 2.使用bufferedInputStream對象的read()方法讀取數據 * 3.釋放資源 */ static void bufferedInputStream() { try ( BufferedInputStream bis = new BufferedInputStream(new FileInputStream("./src/JavaCore/IO/BOS.txt"), 1024) ) { int len; byte[] bytes = new byte[1024]; while ((len = bis.read(bytes)) != -1) { System.out.println(new String(bytes, 0, len)); } } catch (IOException E) { System.out.println(E); } }
構造方法ip
BufferedOutputStream(OutputStream out)建立一個新的緩衝輸出流,以將數據寫入指定的底層輸出流。
BufferedOutputStream(OutputStream out, int size)建立一個新的緩衝輸出流,以便以指定的緩衝區大小將數據寫入指定的底層輸出流。
方法:
intavailable()返回從該輸入流中能夠讀取(或跳過)的字節數的估計值,而不會被下一次調用此輸入流的方法阻塞。
voidclose()關閉此輸入流並釋放與流相關聯的任何系統資源。
voidmark(int readlimit)見的總承包 mark的方法 InputStream 。
booleanmarkSupported()測試這個輸入流是否支持 mark和 reset方法。
intread()見 read法 InputStream的通常合同。
intread(byte[] b, int off, int len)從給定的偏移開始,將字節輸入流中的字節讀入指定的字節數組。
示例:
/** * bufferedOutputStream的使用步驟 * 1.建立bufferedOutputStream對象,並在構造方法中傳入OutputStream * 2.使用bufferedOutputStream的write()方法將數據寫入緩衝區 * 3.flush()將緩衝區的數據刷入文件 * 4.關閉流 */ static void bufferedOutputStream() { //這裏使用的JDK7的新特性,在try中new 流對象,使用完後自動關閉 try ( BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("./src/JavaCore/IO/BOS.txt"), 1024) ) { bos.write("這是一個昂揚的時代,同時充滿了悲傷的故事".getBytes()); } catch (IOException e) { System.out.println(e); } }
buffredReader--繼承關係java.lang.Objec<-java.io.Write<-rjava.io.BufferedWriter
構造方法:
BufferedWriter(Writer out)建立使用默認大小的輸出緩衝區的緩衝字符輸出流。
BufferedWriter(Writer out, int sz)建立一個新的緩衝字符輸出流,使用給定大小的輸出緩衝區。
因此buffredReader的使用和Writer的方法基本一致,但buffredReader是須要傳入一個writer對象,同時在buffredReader的方法中有一個新方法就是:
public void newLine() throws IOException寫一行行分隔符。 行分隔符字符串由系統屬性line.separator定義,並不必定是單個換行符('\ n')字符。
newLine()直接調用系統的line.separator定義。
bufferedReader--繼承關係:
java.lang.Object<-java.io.Reader<-java.io.BufferedReader
構造方法:
BufferedReader(Reader in)建立使用默認大小的輸入緩衝區的緩衝字符輸入流。
BufferedReader(Reader in, int sz)建立使用指定大小的輸入緩衝區的緩衝字符輸入流。
bufferedReader構造方法中傳入Reader對象,而後方法使用也基本和reader一致,但有一個獨有方法:
public String readLine() throws IOException
讀一行文字。 一行被視爲由換行符(' n'),回車符(' r')中的任何一個或隨後的換行符終止。
返回所讀取行的內容,若是已經到達流的末尾則爲null
本博客爲Swagger-Ranger的筆記分享,文章會持續更新 文中源碼地址: https://github.com/Swagger-Ranger 歡迎交流指正,若有侵權請聯繫做者確認刪除: liufei32@outlook.com