標籤:
位元組流以位元組為傳輸單位,用來讀寫8位的資料,除了能夠處理純文字檔案之外,還能用來處理二進位檔案的資料。InputStream類和OutputStream類是所有位元組流的父類。InputStream類面向位元組的輸入資料流都是InputStream類的子類,其類階層10-6所示。
圖10-6 InputStream的類階層圖
表 10-5 列出了 InputStream 的主要子類及說明。
表 10-5 InputStream 的主要子類
| 類名 |
功能描述 |
| FileInputStream |
從檔案中讀取的輸入資料流 |
| PipedInputStream |
輸入管道 |
| FilterInputStream |
過濾輸入資料流 |
| ByteArrayInputStream |
從位元組數組讀取的輸入資料流 |
| SequenceInputStream |
兩個或多個輸入資料流的聯合輸入資料流,按順序讀取 |
| ObjectInputStream |
對象的輸入資料流 |
| LineNumberInputStream |
為文字檔輸入資料流附加行號 |
| DataInputStream |
包含讀取 Java 標準資料類型方法的輸入資料流 |
| BufferedInputStream |
緩衝輸入資料流 |
| PushbackInputStream |
返回一個位元組並把此位元組放回輸入資料流 |
InputStream 流類中包含一套所有輸入都需要的方法,可以完成最基本的從輸入資料流讀入資料的功能。表 10-6 列出了其中常用的方法及說明。
表 10-6 InputStream 的常用方法
| 方法 |
功能描述 |
| void close() |
關閉輸入資料流 |
| void mark() |
標記輸入資料流的當前位置 |
| void reset() |
將讀取位置返回到標記處 |
| int read() |
從輸入資料流中當前位置讀入一個位元組的位元據,以此資料為低位位元組,補足16位的整型量(0~255)後返回,若輸入資料流中當前位置沒有資料,則返回-1 |
| int read(byte b[]) |
從輸入資料流中的當前位置連續讀入多個位元組儲存在數組中,並返回所讀取的位元組數 |
| int read(byte b[], int off, int len) |
從輸入資料流中當前位置連續讀len長的位元組,從數組第off+1個元素位置處開始存放,並返回所讀取的位元組數 |
| int available() |
返回輸入資料流中可以讀取的位元組數 |
| long skip(long n) |
略過n個位元組 |
| long skip(long n) |
跳過流內的n個字元 |
| boolean markSupported() |
測試輸入資料流是否支援標記 |
OutputStream類面向位元組的輸出資料流都是OutputStream類的子類,其類階層10-7所示。
圖10-7 OutputStream的類階層圖
10-7列出了OutputStream的主要子類及說明。
表10-7 OutputStream的主要子類
| 類名 |
功能描述 |
| FileOutputStream |
寫入檔案的輸出資料流 |
| PipedOutputStream |
輸出管道 |
| FilterOutputStream |
過濾輸出資料流 |
| ByteArrayOutputStream |
寫入位元組數組的輸出資料流 |
| ObjectOutputStream |
對象的輸出資料流 |
| DataOutputStream |
包含寫Java標準資料類型方法的輸出資料流 |
| BufferedOutputStream |
緩衝輸出資料流 |
| PrintStream |
包含print()和println()的輸出資料流 |
OutputStream流類中包含一套所有輸出都需要的方法,可以完成最基本的向輸出資料流寫入資料的功能。表10-8列出了其中常用的方法及說明。
表10-8 OutputStream的常用方法
| 方法 |
功能描述 |
| void close() |
關閉輸出資料流 |
| void flush() |
強制清空緩衝區並執行向外設輸出資料 |
| void write(int b) |
將參數b的低位位元組寫入到輸出資料流 |
| void write(byte b[]) |
按順序將數組b[]中的全部位元組寫入到輸出資料流 |
| void write(byte b[], int off, int len) |
按順序將數組b[]中第off+1個元素開始的len個資料寫入到輸出資料流 |
由於InputStream和OutputStream都是抽象類別,所以在程式中建立的輸入資料流對象一般是它們某個子類的對象,通過調用對象繼承的read()和write()方法就可實現對相應外設的輸入輸出操作。
系列文章:Java知多少(上)Java知多少(39)interface介面Java知多少(40)介面和抽象類別的區別Java知多少(41)泛型詳解Java知多少(42)泛型萬用字元和型別參數的範圍Java知多少(43)異常處理基礎Java知多少(44)異常類型Java知多少(45)未被捕獲的異常Java知多少(46)try和catch的使用Java知多少(47)多重catch語句的使用Java知多少(48)try語句的嵌套Java知多少(49)throw:異常的拋出Java知多少(50)Java throws子句Java知多少(51)finallyJava知多少(52)內建異常Java知多少(53)使用Java建立自己的異常子類Java知多少(54)斷言詳解Java知多少(55)線程Java知多少(56)執行緒模式Java知多少(57)主線程Java知多少(58)線程Runnable介面和Thread類詳解Java知多少(59)建立多線程Java知多少(60)isAlive()和join()的使用Java知多少(61)線程優先順序Java知多少(62)線程同步Java知多少(63)線程間通訊Java知多少(64)線程死結Java知多少(65)線程的掛起、恢複和終止Java知多少(66)輸入輸出(IO)和流的概述Java知多少(67)面向字元的輸入資料流Java知多少(68)面向字元的輸出資料流
Java知多少(69)面向位元組的輸入輸出資料流