1. 程式人生 > >[十二]JavaIO之BufferedInputStream BufferedOutputStream

[十二]JavaIO之BufferedInputStream BufferedOutputStream

功能簡介

BufferedInputStream 和 BufferedOutputStream一樣,他們都是過濾流

裝飾器模式下具體的裝飾類

用來裝飾InputStream以及OutputStream下的其他的具體的實現類

比如FileInputStream

BufferedInputStream 和 BufferedOutputStream

都是在內部藉助於位元組陣列,來實現快取的

BufferedInputStream

BufferedInputStream

內部使用位元組陣列對輸入流進行快取

protected volatile byte buf[];

內部的位元組陣列

可能動態增長,動態增長是藉助於建立新陣列然後複製,重新指向

DEFAULT_BUFFER_SIZE

預設大小8K 8192

private static int MAX_BUFFER_SIZE = Integer.MAX_VALUE - 8;

緩衝區最大允許大小

protected int count;

有效位元組的個數

protected int pos;

buf 陣列中讀取的下一個字元的下標索引

protected int markpos = -1;

最後一次呼叫 mark 方法時 pos 欄位的值

protected int marklimit;

呼叫 mark 方法後,在後續呼叫 reset 方法失敗之前所允許的最大提前讀取量

就是最多支援的個數

buf[]; 用於實際儲存位元組陣列的值

DEFAULT_BUFFER_SIZE 表示預設緩衝區的大小

MAX_BUFFER_SIZE 表示 最大支援的緩衝區大小

這三個欄位用於儲存緩衝

pos 用於記錄讀取位置

markpos / marklimit mark功能使用

構造方法

說了很多遍的裝飾器模式, 是你還有你

他的使用,必然離不開 InputStream,而且,它內部還會維護一個 InputStream

看下構造方法,如果不指定大小,那麼將會使用預設大小

如果指定了大小,只要合法,將會建立位元組陣列

而且,會呼叫父類的構造方法,父類FilterInputStream中 in是protected的

相關推薦

[]JavaIOBufferedInputStream BufferedOutputStream

功能簡介BufferedInputStream 和 BufferedOutputStream一樣,他們都是過濾流裝飾器模式下具體的裝飾類用來裝飾InputStream以及OutputStream下的其他的具體的實現類比如FileInputStreamBufferedInputStream 和 Buffere

thinking in java (四) ----- IOBufferedInputStream

BufferedInputStream介紹 BufferedInputStream是緩衝輸入流,作用是為另外一個輸入流新增緩衝功能,以及mark reset功能。 本質上,緩衝功能是通過一個內部緩衝區陣列實現的,例如在新建某輸入流對應的BufferedInputStream後,

[五]JavaIORandomAccessFile

如上圖所示,這就是RandomAccessFile訪問檔案的模型可以返回這個檔案的檔案描述符     FileDescriptor getFD()可以返回當前的檔案指標               native long getFilePointer()可以返回檔案的長度                   

[五]javaIOSequenceInputStream

div 取數據 read 細節 復雜 pla inline seq edi 功能簡介 SequenceInputStream 合並流 顧名思義,就是可以吧兩個流合並起來 他並沒有很復雜,單純的很,僅僅實現了InputStream

thinking in java () ----- 集合LinkedList

LinkedList介紹 LinkedList簡介 LinkedList是一個繼承與AbstractSequentialList的雙向連結串列,他也可以當做堆疊,佇列或者雙向佇列進行操作。 LinkedList實現了List介面,能進行佇列操作 LinkedL

JavaFX UI控制元件教程(Titled Pane和Accordion

翻譯自  Titled Pane and Accordion 本章介紹如何在JavaFX應用程式中使用accordion和title窗格的組合。 標題窗格是帶標題的面板。它可以開啟和關閉,它可以封裝任何Node諸如UI控制元件或影象以及新增到佈局容器的元素組。 標題窗

Android提高第藍芽感測應用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android入門第Gallery

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

thinking in java (三) ----- IO PrintWriter

介紹 PrintWriter 是字元型別的列印輸出流,它繼承於Writer。 PrintWriter用於向文字輸出流列印物件的格式化表示形式。它實現在 PrintStream 中的所有 print 方法。 原始碼 package jav

[六]JavaIOInputStreamReader 與 OutputStreamWriter

簡介 InputStreamReader OutputStreamWriter是轉換流 InputStreamReader 是位元組流通向字元流的橋樑,它將位元組流轉換為字元流. OutputStreamWriter是字元流通向位元組流的橋樑,它將字元

Netty()——ChannelPipeline

       前邊文章的程式碼中,我們經常往pipeline中新增ChannelHandler來進行前後順序控制處理實際業務。是不是類似Servlet和Filter過濾器,利用職責鏈模式的思想,通過一個一個的Handler進行業務

thinking in java () ----- IO序列化

序列化的作用和用途 序列化,就是為了保持物件的狀態,而與之對應的反序列化,則可以把物件的狀態再讀取出來, 簡而言之:序列化/反序列化,是JAVA提供的一種專門用於儲存/恢復物件狀態的機制。 一般在以下幾種情況我們會使用序列化: 1.當你想把記憶體中的物件狀態儲存到

Java設計模式(結構型模式:享元模式

一、定義: 享元模式,也就是說在一個系統中如果有多個相同的物件,那麼只共享一份就可以了,不必每個都去例項化一個物件。比如說一個文本系統,每個字母定一個物件,那麼大小寫字母一共就是52個,那麼就要定義52個物件。如果有一個1M的文字,那麼字母是何其的多,如果每個字母都定義一個

[七]JavaIOCharArrayReader 和 CharArrayWriter

功能簡介 CharArrayReader  和 CharArrayWriter, 字元陣列作為資料來源的字元讀寫  CharArrayReader  CharArrayWriter  只需要記住他們的根本, CharArray 是資料來源的形式 讀 CharArrayReader 需要接受一個字元

弗尤部落格(問一問

正常通過導航跳轉到本頁面 ,但是datalist繫結資料後沒有正常顯示,我把他放在if(!ispostback)中了。 一個頁面第一次顯示的時候 isPostBack=false ,然後你在這個頁面上點選按鈕或其它東西提交的時候,isPostBack=true 假設你在page_load

一起學Netty( Netty心跳簡單Demo

前面簡單地瞭解了一下IdleStateHandler,我們現在寫一個簡單的心跳demo: 1)伺服器端每隔5秒檢測伺服器端的讀超時,如果5秒沒有接受到客戶端的寫請求,也就說伺服器端5秒沒有收到讀事件,則視為一次超時 2)如果超時二次則說明連線處於不活躍的狀態,關閉Serve

百度大腦人臉識別深度驗證與思考(斷章

點開這篇博文,讓我帶你進入一個全新的世界,那是一片我們所有人從未涉足過的領域,充滿了玄妙、驚愕和震撼,感謝百度大腦這個人工智慧,讓我們可以有機會推開那扇小小的神奇之門。 前言 乍一看標題,覺得有些愕然,但這篇博文不以標題見長。用到斷章一詞,是因為其極為符合這

資料結構複習(平衡叉樹及哈夫曼樹

平衡二叉樹需要保證在插入和刪除二叉樹結點時,任意結點的左、右子樹的高度差絕對值不超過1,所以平衡二叉樹或者為一棵空樹,或者為具有左子樹和右子樹都為平衡二叉樹的性質。插入和刪除時出現不滿足條件時可進行一定的調整,分為LL平衡旋轉、RR平衡旋轉、LR平衡旋轉、RL平衡杆旋轉。

React Native入門(使用第三方字型檔案

前言 專案中需要展示一些別的平面或者其他民族文字時,需要使用該文字對應的字型檔案,一般來說都是.ttf的。 在React Native中,使用字型檔案就是在style中設定fontFamily屬性! 比如,這裡的字型檔案為:FangSong.ttf,那麼使

Andrew Ng機器學習課程筆記(無監督學習K-means聚類演算法

Preface Unsupervised Learning(無監督學習) K-means聚類演算法 Unsupervised Learning 我們以前介紹的所有演算法都是基於有類別標籤的資料集,當我們對於沒有標籤的資料進行分類時,以前的方