欧美三级电影完整|亚洲一二三四久久|性爱视频精品一区二区免费在线观看|国产精品啪啪视频|婷婷六月综合操人妻视频网站|99爱免费视频在线观看|美女一级片在线观看|北京熟女88av|免费看黄色A级电影|欧美黄色毛片儿

java的InputStream和OutputStream的理解

2023-04-12


1、在java中stream代表一種數(shù)據(jù)流(源),javaio的底層數(shù)據(jù)元,---(想像成水龍頭)
2、任何有能力產(chǎn)生數(shù)據(jù)流(源)的javaio對象就可以看作是一個InputStream對象
既然它能產(chǎn)生出數(shù)據(jù),我們就可以將數(shù)據(jù)取出,java對封裝的通用方法就read()方法了--(出水龍頭)
3、任何有能力接收數(shù)據(jù)源(流)的javaio對象我們就可以看作是一個OutputStream對象
同樣,它能接收數(shù)據(jù),我們就可以調(diào)用它的write方法,來讓它接收數(shù)據(jù)--(進水龍頭了,呵呵)
4、當然,我們可以在Inputstream和OutputStream數(shù)據(jù)源的基礎上,從實際需要觸發(fā),
來重新封裝出不同性能機制的輸入、輸出流了,java.io包中提供了很豐富的輸入、輸出流對象,如:
基于字節(jié)流的stream:
DataOutputStream----DataInputStream:
FileOutputStream-----FileInputStream:
.............等,可以用InputStream和OutputStream從JDK文檔查閱
基于字符流的stream(典型的以write和reader來標識的):
FileWriter---FileReader:
StringWriter---StringReader:
.........等,你自己可以用Writer和Reader從JDK文檔里頭查看說明
stream應該是水龍頭里的水資源,
InputStream:是一個出水龍頭(把水封裝在里頭)的一個實物對象,該對象的read方法呢,就想成這個
出水龍頭這一機制對象的開關(guān)鈕,你read或openStream(其他對象包容InputStream對象的對象方法)一下呢,就等于打開了出水龍頭的按鈕,水就出來了,里頭封裝的水是什么性質(zhì)的呢,你就用相應的容器來裝,如string或byte[].....
OutputStream:你就在InputStream基礎上反著想就ok了
-------------------------------------------------------------------------------------------------------------------------
OutputStream
(1)輸出數(shù)據(jù)
void write(int b)往流中寫一個字節(jié)b
void write(byte b[])往流中寫一個字節(jié)數(shù)組b
void write(byte b[],int off,int len)把字節(jié)數(shù)組b中從下標off開始,長度為len的字節(jié)寫入流中
(2)
flush()刷空輸出流,并輸出所有被緩存的字節(jié)
由于某些流支持緩存功能,該方法將把緩存中所有內(nèi)容強制輸出到流中。
(3)關(guān)閉流
close()流操作完畢后必須關(guān)閉。
------------------------------------------------------------------------------------------------------------------------
InputStream
(1)從流中讀取數(shù)據(jù)
int read() 讀取一個字節(jié),返回值為所讀得字節(jié)
int read(byte b[]) 讀取多個字節(jié),放置到字節(jié)數(shù)組b中,通常讀取的字節(jié)數(shù)量為b的長度,返回值為實際獨取的
字節(jié)的數(shù)量。
int read(byte b[] ,int off,int len)讀取len個字節(jié),放置到以下標off開始字節(jié)數(shù)組b中,返回值為實際
讀取的字節(jié)的數(shù)量。
int available() 返回值為流中尚未讀取的字節(jié)的數(shù)量。
long skip(long n);讀指針跳過n個字節(jié)不讀,返回值為實際跳過的字節(jié)數(shù)量
(2)關(guān)閉流
close() 流操作完畢后必須關(guān)閉
(3)使用輸入流中的標記
void mark(int readlimit)紀錄當前指針的所在位置.readlimit表示讀指針讀出的readlimit個字節(jié)后
所標記的指針位置才實效。
void reset() 把讀指針重新指向用mark方法所記錄的位置
boolean markSupported() 當前的流是否支持讀指針的記錄功能。
-----------------------------------------------------------------------------------------------------------------------


Java IO通過Stream(流)來實現(xiàn)。關(guān)于流,可以理解為是一種“數(shù)據(jù)的管道”。管道中流動的東西可以是基于字節(jié),也可以是基于字符的等。就好像管道里面可以流動水,也可以流動石油一樣。


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



下面,我們就來了解“流”。


Java中定義了兩種類型的流:字節(jié)型,和字符型。


字節(jié)流:處理字節(jié)的輸入和輸出。包括讀寫二進制數(shù)據(jù)等方面的內(nèi)容。


字符流:處理字符的輸入和輸出。他采用的是Unicode編碼,可以實現(xiàn)國際化。使用字符流的另外一個好處就是:字符流比字節(jié)流更有效率。



字節(jié)流:


字節(jié)流包含兩個頂層抽象類:InputStreamOutputStream。


1:字節(jié)流的兩個頂層類是抽象類,分別是:InputStreamOutputStream。


2:每個抽象類都有子類來實現(xiàn)具體的功能,處理不同的設備的輸入和輸 出。



下面簡單介紹字節(jié)流的幾個常用子類:::



字節(jié)流類


功能簡單介紹


DataInputStream


包含了讀取Java標準數(shù)據(jù)類型的輸入流


DataOutputStream


包含了寫Java標準數(shù)據(jù)類型的輸出流


ByteArrayInputStream


從字節(jié)數(shù)組讀取的輸入流


ByteArrayOutputStream


寫入字節(jié)數(shù)組的輸出流


FileInputStream


從文件讀入的輸入流


FileOutputStream


寫入文件的輸出流


PrintStream


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


PushbackInputStream


返回一個字節(jié)到輸入流,主要用于編譯器的實現(xiàn)


PipedInputStream


輸出管道


PipedOutputStream


輸入管道


SequenceInputStream


將n個輸入流聯(lián)合起來,一個接一個按一定順序讀取


RandomAccessFile


隨機訪問文件


BufferInputStream


緩沖輸入流


BufferOutputStream


緩沖輸出流


FilterInputStream


實現(xiàn)了InputStream Interface


FilterOutputStream


實現(xiàn)了OutputStream Interface


InputStream


抽象類,描述流的輸入


OutputStream


抽象類,描述流的輸入



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


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




本文僅代表作者觀點,版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。

免責聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com