Java IO: 流
Java IO流是既可以從中讀取,也可以寫入到其中的資料流。正如這個系列教程之前提到過的,流通常會與資料來源、資料流向目的地相關聯,比如檔案、網路等等。
流和陣列不一樣,不能通過索引讀寫資料。在流中,你也不能像陣列那樣前後移動讀取資料,除非使用RandomAccessFile 處理檔案。流僅僅只是一個連續的資料流。
某些類似PushbackInputStream 流的實現允許你將資料重新推回到流中,以便重新讀取。然而你只能把有限的資料推回流中,並且你不能像運算元組那樣隨意讀取資料。流中的資料只能夠順序訪問。
Java IO流通常是基於位元組或者基於字元的。位元組流通常以“stream”命名,比如InputStream和OutputStream。除了DataInputStream 和DataOutputStream 還能夠讀寫int, long, float和double型別的值以外,其他流在一個操作時間內只能讀取或者寫入一個原始位元組。
字元流通常以“Reader”或者“Writer”命名。字元流能夠讀寫字元(比如Latin1或者Unicode字元)。可以瀏覽Java Readers and Writers獲取更多關於字元流輸入輸出的資訊。
InputStream
java.io.InputStream類是所有Java IO輸入流的基類。如果你正在開發一個從流中讀取資料的元件,請嘗試用InputStream替代任何它的子類(比如FileInputStream)進行開發。這麼做能夠讓你的程式碼相容任何型別而非某種確定型別的輸入流。
然而僅僅依靠InputStream並不總是可行。如果你需要將讀過的資料推回到流中,你必須使用PushbackInputStream,這意味著你的流變數只能是這個型別,否則在程式碼中就不能呼叫PushbackInputStream的unread()方法。
通常使用輸入流中的read()方法讀取資料。read()方法返回一個整數,代表了讀取到的位元組的內容(譯者注:0 ~ 255)。當達到流末尾沒有更多資料可以讀取的時候,read()方法返回-1。
這是一個簡單的示例:
InputStream input
=
new
FileInputStream
(
"c:\\data\\input-file.txt"
)
;
int data
= input
.
read
(
)
;
while
(data
!=
-
1
)
{
data
= input
.
read
(
)
;
}
OutputStream
java.io.OutputStream是Java IO中所有輸出流的基類。如果你正在開發一個能夠將資料寫入流中的元件,請嘗試使用OutputStream替代它的所有子類。
這是一個簡單的示例:
//java學習交流:737251827 進入可領取學習資源及對十年開發經驗大佬提問,免費解答!
OutputStream output
=
new
FileOutputStream
(
"c:\\data\\output-file.txt"
)
;
output
.
write
(
"Hello World"
.
getBytes
(
)
)
;
output
.
close
(
)
;
組合流
你可以將流整合起來以便實現更高階的輸入和輸出操作。比如,一次讀取一個位元組是很慢的,所以可以從磁碟中一次讀取一大塊資料,然後從讀到的資料塊中獲取位元組。為了實現緩衝,可以把InputStream包裝到BufferedInputStream中。程式碼示例:
InputStream input
=
new
BufferedInputStream
(
new
FileInputStream
(
"c:\\data\\input-file.txt"
)
)
;
緩衝同樣可以應用到OutputStream中。你可以實現將大塊資料批量地寫入到磁碟(或者相應的流)中,這個功能由BufferedOutputStream實現。
緩衝只是通過流整合實現的其中一個效果。你可以把InputStream包裝到PushbackInputStream中,之後可以將讀取過的資料推回到流中重新讀取,在解析過程中有時候這樣做很方便。或者,你可以將兩個InputStream整合成一個SequenceInputStream。
將不同的流整合到一個鏈中,可以實現更多種高階操作。通過編寫包裝了標準流的類,可以實現你想要的效果和過濾器。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010294/viewspace-2844426/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java -IO流Java
- Java IO流Java
- Java IO流Java
- java - IO流Java
- [java IO流]之 IO概述Java
- Java的IO流Java
- Java筆記-IO流Java筆記
- JAVA IO流-小白版Java
- 【重學Java】IO流Java
- Java IO流(詳細)Java
- Java IO: 其他字元流(下)Java字元
- java進階(33)--IO流Java
- JAVA_基礎IO流物件流(三)Java物件
- java.IO緩衝流.studyJava
- 淺析java中的IO流Java
- Java IO流字元流簡介及基本使用Java字元
- [java IO流]之 萬能輸出流列印流printWriterJava
- Java基礎(八)——IO流1_位元組流、字元流Java字元
- Java基礎 Java-IO流 深入淺出Java
- Java入門系列-22-IO流Java
- Java中IO流學習總結Java
- [java IO流]之檔案複製Java
- [java IO流]之檔案拷貝Java
- [java IO流]之編碼和解碼Java
- [java IO流]之 Properties屬性集Java
- Java學習筆記09(IO流)Java筆記
- Java提高篇(二):IO位元組流、字元流和處理流Java字元
- Java基礎(八)——IO流2_緩衝流、轉換流Java
- IO 流
- IO流
- Day55.IO流複習 -Java常用類、集合、IO#Java
- java基礎(四):談談java中的IO流Java
- Java基礎14-java進階(5)【IO流】Java
- java基礎學習_io流之FileInputStreamJava
- Java知識點總結——IO流框架Java框架
- [java IO流]之 序列化流和反序列化流(ObjectOutputStream/ObjectInputStream)JavaObject
- JavaSE:IO流Java
- IO 字元流字元