InputStream和outputStream

java.io包中提供了很豐富的輸入、輸出流對象,如:
基於字節流的stream:
DataOutputStream----DataInputStream:
FileOutputStream-----FileInputStream:
.............等,能夠用InputStream和OutputStream從JDK文檔查閱
基於字符流的stream(典型的以write和reader來標識的):
FileWriter---FileReader:
StringWriter---StringReader:
.........等,你本身能夠用Writer和Reader從JDK文檔裏頭查看說明
stream應該是水龍頭裏的水資源,
InputStream:是一個出水龍頭(把水封裝在裏頭)的一個實物對象,該對象的read方法呢,就想成這個
出水龍頭這一機制對象的開關鈕,你read或openStream(其餘對象包容InputStream對象的對象方法)一下呢,就等於打開了出水龍頭的按鈕,水就出來了,裏頭封裝的水是什麼性質的呢,你就用相應的容器來裝,如string或byte[].....
OutputStream:你就在InputStream基礎上反着想就ok了
--------------------

OutputStream
(1)輸出數據
   void write(int b)往流中寫一個字節b
   void write(byte b[])往流中寫一個字節數組b
   void write(byte b[],int off,int len)把字節數組b中從下標off開始,長度爲len的字節寫入流中
 (2)
   flush()刷空輸出流,並輸出全部被緩存的字節
           因爲某些流支持緩存功能,該方法將把緩存中全部內容強制輸出到流中。
(3)關閉流
   close()流操做完畢後必須關閉。java

 ---------------------------數組

 

InputStream
(1)從流中讀取數據
   int read() 讀取一個字節,返回值爲所讀得字節
   int read(byte b[]) 讀取多個字節,放置到字節數組b中,一般讀取的字節數量爲b的長度,返回值爲實際獨取的
                      字節的數量。
   int read(byte b[] ,int off,int len)讀取len個字節,放置到如下標off開始字節數組b中,返回值爲實際
                                       讀取的字節的數量。
   int available() 返回值爲流中還沒有讀取的字節的數量。
   long skip(long n);讀指針跳過n個字節不讀,返回值爲實際跳過的字節數量
(2)關閉流
   close() 流操做完畢後必須關閉
(3)使用輸入流中的標記
   void mark(int readlimit)紀錄當前指針的所在位置.readlimit表示讀指針讀出的readlimit個字節後
                           所標記的指針位置才實效。
   void reset() 把讀指針從新指向用mark方法所記錄的位置
   boolean markSupported() 當前的流是否支持讀指針的記錄功能
--------------------------

 

 

Java IO經過Stream(流)來實現。關於流,能夠理解爲是一種「數據的管道」。管道中流動的東西能夠是基於字節,也能夠是基於字符的等。就好像管道里面能夠流動水,也能夠流動石油同樣。緩存

而對應於流還有一個概念:輸入、輸出設備。這些設備能夠是磁盤文件、鍵盤(輸入設備)、顯示器(輸出設備)、打印機(輸出設備)、網絡套接字等等。網絡

下面,咱們就來了解「流」。dom

Java中定義了兩種類型的流:字節型,和字符型。編碼

字節流:處理字節的輸入和輸出。包括讀寫二進制數據等方面的內容。spa

字符流:處理字符的輸入和輸出。他採用的是Unicode編碼,能夠實現國際化。使用字符流的另一個好處就是:字符流比字節流更有效率。指針

字節流:code

字節流包含兩個頂層抽象類:InputStreamOutputStream對象

1:字節流的兩個頂層類是抽象類,分別是:InputStreamOutputStream

2:每一個抽象類都有子類來實現具體的功能,處理不一樣的設備的輸入和輸  出。

下面簡單介紹字節流的幾個經常使用子類:::

字節流類

功能簡單介紹

DataInputStream

包含了讀取Java標準數據類型的輸入流

DataOutputStream

包含了寫Java標準數據類型的輸出流

ByteArrayInputStream

從字節數組讀取的輸入流

ByteArrayOutputStream

寫入字節數組的輸出流

FileInputStream

從文件讀入的輸入流

FileOutputStream

寫入文件的輸出流

PrintStream

包含最多見的Print()和Println()的輸出流

PushbackInputStream

返回一個字節到輸入流,主要用於編譯器的實現

PipedInputStream

輸出管道

PipedOutputStream

輸入管道

SequenceInputStream

n個輸入流聯合起來,一個接一個按必定順序讀取

RandomAccessFile

隨機訪問文件

BufferInputStream

緩衝輸入流

BufferOutputStream

緩衝輸出流

FilterInputStream

實現了InputStream Interface

FilterOutputStream

實現了OutputStream Interface

InputStream

抽象類,描述流的輸入

OutputStream

抽象類,描述流的輸入

抽象類InputStreamOutpurStream定義了實用的方法,其中最主要的是read()和

write()。這兩個方法在InputStreamOutputStream中聲明爲抽象方法,由子流類overwrite實現。

2:每一個抽象類都有子類來實現具體的功能,處理不一樣的設備的輸入和輸  出。

 
相關文章
相關標籤/搜索