摘要:源碼內容過濾輸出流的父類,繼承自類似類本身只是簡單地重寫那些將所有請求傳遞給所包含輸出流的的所有方法。的子類可進一步地重寫這些方法中的一些方法,并且還可以提供一些額外的方法和字段。
介紹
根據名稱就可以了解到過濾輸入輸出流是做什么用的,過濾,過濾是為了干嘛呢?前面我們介紹過了字節數組輸入輸出流,對于字節數組輸入輸出流,只提供了一些必要的讀取, 寫入標記等方法或功能,這些是最基礎的,那么如果我們想將流根據指定的內容寫入寫出的時候該咋辦呢?不能每次都自己來處理相應的方法,這樣就比較麻煩了。所以就有了過濾的流;
FilterInpuStream and FilterOutputStream過濾流是開發設計模式中裝飾器模式最典型的實現。通過裝飾過濾,實現增加不同的流操作的功能;
FilterInpuStream 源碼內容FilterInpuStream 是所有過濾類流的父類,繼承自InputStream,在類中定義了InputStream屬性內容,即裝飾InputStream;FilterInputStream 類本身只是簡單地重寫那些將所有請求傳遞給所包含輸入流的 InputStream 的所有方法;
public class FilterInputStream extends InputStream { // 要過濾的輸入流。 protected volatile InputStream in; protected FilterInputStream(InputStream in) { this.in = in; } public int read() throws IOException { return in.read(); } public int read(byte b[]) throws IOException { return read(b, 0, b.length); } public int read(byte b[], int off, int len) throws IOException { return in.read(b, off, len); } public long skip(long n) throws IOException { return in.skip(n); } public int available() throws IOException { return in.available(); } public void close() throws IOException { in.close(); } public synchronized void mark(int readlimit) { in.mark(readlimit); } public synchronized void reset() throws IOException { in.reset(); } public boolean markSupported() { return in.markSupported(); } }FilterOutputStream源碼內容
過濾輸出流的父類,繼承自OutputStream,類似FilterInputStream,FilterOutputStream 類本身只是簡單地重寫那些將所有請求傳遞給所包含輸出流的 OutputStream 的所有方法。FilterOutputStream 的子類可進一步地重寫這些方法中的一些方法,并且還可以提供一些額外的方法和字段。
public class FilterOutputStream extends OutputStream { //要過濾的基礎輸出流。 protected OutputStream out; public FilterOutputStream(OutputStream out) { this.out = out; } public void write(int b) throws IOException { out.write(b); } public void write(byte b[]) throws IOException { write(b, 0, b.length); } public void write(byte b[], int off, int len) throws IOException { if ((off | len | (b.length - (len + off)) | (off + len)) < 0) throw new IndexOutOfBoundsException(); for (int i = 0 ; i < len ; i++) { write(b[off + i]); } } public void flush() throws IOException { out.flush(); } public void close() throws IOException { try { flush(); } catch (IOException ignored) { } out.close(); }總結
FilterInpuStream 和FilterOutputStream是過濾輸入輸出流的父類,具體需要過濾增加的附加功能由實現它們的子類去完成,具體內容后面慢慢介紹;
最后還是召喚神獸/** * ,s555SB@@& * :9H####@@@@@Xi * 1@@@@@@@@@@@@@@8 * ,8@@@@@@@@@B@@@@@@8 * :B@@@@X3hi8Bs;B@@@@@Ah, * ,8i r@@@B: 1S ,M@@@@@@#8; * 1AB35.i: X@@8 . SGhr ,A@@@@@@@@S * 1@h31MX8 18Hhh3i .i3r ,A@@@@@@@@@5 * ;@&i,58r5 rGSS: :B@@@@@@@@@@A * 1#i . 9i hX. .: .5@@@@@@@@@@@1 * sG1, ,G53s. 9#Xi;hS5 3B@@@@@@@B1 * .h8h.,A@@@MXSs, #@H1: 3ssSSX@1 * s ,@@@@@@@@@@@@Xhi, r#@@X1s9M8 .GA981 * ,. rS8H#@@@@@@@@@@#HG51;. .h31i;9@r .8@@@@BS;i; * .19AXXXAB@@@@@@@@@@@@@@#MHXG893hrX#XGGXM@@@@@@@@@@MS * s@@MM@@@hsX#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&, * :GB@#3G@@Brs ,1GM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B, * .hM@@@#@@#MX 51 r;iSGAM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8 * :3B@@@@@@@@@@@&9@h :Gs .;sSXH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: * s&HA#@@@@@@@@@@@@@@M89A;.8S. ,r3@@@@@@@@@@@@@@@@@@@@@@@@@@@r * ,13B@@@@@@@@@@@@@@@@@@@5 5B3 ;. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@i * 5#@@#&@@@@@@@@@@@@@@@@@@9 .39: ;@@@@@@@@@@@@@@@@@@@@@@@@@@@; * 9@@@X:MM@@@@@@@@@@@@@@@#; ;31. H@@@@@@@@@@@@@@@@@@@@@@@@@@: * SH#@B9.rM@@@@@@@@@@@@@B :. 3@@@@@@@@@@@@@@@@@@@@@@@@@@5 * ,:. 9@@@@@@@@@@@#HB5 .M@@@@@@@@@@@@@@@@@@@@@@@@@B * ,ssirhSM@&1;i19911i,. s@@@@@@@@@@@@@@@@@@@@@@@@@@S * ,,,rHAri1h1rh&@#353Sh: 8@@@@@@@@@@@@@@@@@@@@@@@@@#: * .A3hH@#5S553&@@#h i:i9S #@@@@@@@@@@@@@@@@@@@@@@@@@A. * * * 又看源碼,看你妹妹呀! */
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70659.html
摘要:我的是忙碌的一年,從年初備戰實習春招,年三十都在死磕源碼,三月份經歷了阿里五次面試,四月順利收到實習。因為我心理很清楚,我的目標是阿里。所以在收到阿里之后的那晚,我重新規劃了接下來的學習計劃,將我的短期目標更新成拿下阿里轉正。 我的2017是忙碌的一年,從年初備戰實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:關閉此輸入流并釋放與該流關聯的所有系統資源。在此輸入流中標記當前的位置。將此流重新定位到最后一次對此輸入流調用方法時的位置。 JAVA IO源碼學習系列一(InputStream) ## 1.字節輸入流源碼InputStream介紹## InpuSteam是字節輸入流操作的超類(抽象類),定義了基本的一些操作方法,流的操作大概四部分:(1)構造數據流(來源);(2)讀取流;(3)讀取流...
摘要:簡介字節數組輸入流上一篇簡單的介紹了一下字節輸入流的超類,只提及了一下超類中定義的一些方法字節數組輸入流是超類的一個具體的實現主要的操作實際上就是讀取操作一個字節數組,類中定義了一個緩沖的字節數組,具體的操作通過定義一下標志位,操作次數等進 簡介 ByteArrayInputStream 字節數組輸入流 上一篇簡單的介紹了一下字節輸入流的超類,只提及了一下超類中定義的一些方法;字節數組...
介紹 1. 輸出流:ByteArrayOutputStream 上一篇簡單介紹了輸出流的超類OutputStream,也大概的講述了輸出流的作用,本篇就介紹一下,輸出流的一種實現,字節數組輸出流,該輸出流是為了處理字節的基礎流,本質上就是寫入數據到類中的緩沖字節數組中; 2. ByteArrayOutputStream 源代碼介紹 (1)屬性內容:屬性內容相較輸入流的會有存放數據的緩沖區,也就是字...
摘要:將指定數組中從偏移量開始的個字節寫入此輸出流。刷新此輸出流并強制寫出所有緩沖的輸出字節關閉此輸出流并釋放與此流有關的所有系統資源。內容不多,召喚神獸 介紹 1. 輸出流:OutputStream 之前的文章中介紹過了輸入流的超類InputStream,這篇文章也簡單的介紹一下與輸入流相對的輸出流;輸入流我們之前說過,是將磁盤,文件,或者網絡中的數據讀取出來,(比如字節數組輸入流將數據放...
閱讀 3304·2021-11-18 10:02
閱讀 2751·2019-08-30 13:56
閱讀 407·2019-08-29 12:36
閱讀 521·2019-08-28 18:07
閱讀 712·2019-08-27 10:51
閱讀 3449·2019-08-26 12:13
閱讀 3286·2019-08-26 11:46
閱讀 3315·2019-08-23 12:00