java流式輸入/輸出原理
在java程序中死陆,對于數(shù)據(jù)的輸入余黎、輸出操作以“流”的方式進(jìn)行摆出,用以獲取不同的數(shù)據(jù)疯坤。
程序中通過標(biāo)準(zhǔn)的方法輸入和輸出數(shù)據(jù)。
java.io包定義了多個流類型(類或抽象類)來實現(xiàn)輸入曾雕、輸出功能踏施。
注:所有的輸入和輸出都是站在程序的角度來說明的叮叹。
可以從不同的角度對其進(jìn)行分類问畅。
<1>按照處理數(shù)據(jù)的單位不同可以分為字節(jié)流和字符流。
<2>按照功能不同可以分為節(jié)點流和處理流六荒。
注:
節(jié)點流:節(jié)點流為可以從一個特定的數(shù)據(jù)源(節(jié)點)讀寫數(shù)據(jù)(如:文件护姆、內(nèi)存)
處理流:處理流是“連接”在已存在的流(節(jié)點流或者處理流)之上,通過對數(shù)據(jù)的處理為程序提供更為強大的讀寫功能掏击。
四個抽象類的輸入輸出:
InputStream:
//讀取一個字節(jié)并以整數(shù)的形式返回(0~255)
//如果返回-1卵皂,說明已到輸入流的末尾。
int read() throws IOException
//讀取一系列字節(jié)并存儲到一個數(shù)組buffer
//返回實際讀取的字節(jié)數(shù)砚亭,如果讀取前已到輸入流的末尾返回-1
int read(byte[] buffer) throws IOException
//讀取length個字節(jié)
//并儲存到一個字節(jié)數(shù)組BUffer中灯变,從offset開始
//返回實際讀取的字節(jié)數(shù)殴玛,如果讀取前已到輸入流的末尾返回-1
int read(byte[] buffer, int offset, int length) throws IOException
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//跳過n個字節(jié)不讀,返回實際跳過的字節(jié)數(shù)
long skip(long n) throws IOException
OutPutStream的基本方法
//向輸出流中寫入一個字節(jié)數(shù)據(jù)添祸,該字節(jié)數(shù)據(jù)為參數(shù)b的低8位滚粟。
void write(int b)throws IOException
//將字節(jié)類型的數(shù)組中的數(shù)據(jù)寫入到輸出流
void write(byte[] b) throws IOEXception
//將一個字節(jié)類型的數(shù)組中的從指定位置開始的(off)開始的len個字節(jié)寫入到輸出流。
void write(byte[] b, int off, int len)throws IOEception
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地
void flush() throws IOException
字符流:兩個字節(jié)的輸入或者輸出
Reader用于向程序中輸入數(shù)據(jù)刃泌,且數(shù)據(jù)的處理單位是兩個字節(jié)凡壤。
//讀取一個字符并以整數(shù)的形式返回(0~255)
//如果返回-1已到輸入流的末尾
int read() throws IPEXception
//讀取一些列字符并存儲到一個數(shù)組buffer
//返回實際讀取的字符數(shù),如果讀取前已到輸入流的末尾返回-1
int read(char[] cbuf) throws IOExcetion
//讀取length個字符
//并存儲到一個數(shù)組BUffer耙替,offset位置開始
//返回實際讀取的字符數(shù)亚侠,如果讀取前已到輸入流的末尾返回-1
int read(char[] cbuf, int offset, int length) throws IOException
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//跳過n個字符不讀,返回實際跳過的字節(jié)數(shù)
long skip(long n) throws IOException
Writer輸出一個字符數(shù)據(jù):
//向流中寫入一個字符數(shù)據(jù)俗扇,該字符數(shù)據(jù)為參數(shù)b的低16位
void write(int b ) throws IOException
//將一個字符類型的數(shù)組中的數(shù)據(jù)寫入輸出流
void write(char[] cbuf) throws IOException
//將一個字符類型的數(shù)組中的從指定位置(offset)開始的length個字符寫入到輸出流
void write(char[] cbuf, int offset, int length) throws IOException
//將一個字符串中的字符寫入到輸出流
void write(String string) throws IOException
//將一個字符串從offset開始的length個字符寫入到輸出流
void write(String string, int offset, int length) throws IOException
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//將輸出流中緩存的數(shù)據(jù)全部寫出到目的地
void flush() throws IOException