1. Java的流分爲 Inputstream 和 OutputStream;html
2. 流(stream)的概念源於UNIX中管道(pipe)的概念。在UNIX中,管道是一條不間斷的字節流,用來實現程序或進程間的通訊,或讀寫外圍設備、外部文件等;java
3. Java中,流,簡單的說就是字節(byte),能夠把它看做是不少不少字節(byte) 匯在一塊兒造成的東西,起個名字就叫流,像水滴造成河流同樣,呵呵,我的形象的解釋;windows
4. 一個流,必有源端和目的端,也即必須有數據(Data)和字節(byte)兩個部分,數據(Data):能夠是計算機內存的某些區域,也能夠是磁盤文件,甚至能夠是Internet上的某個URL;字節就不用說了 byte;spa
5. 流的源端和目的端可簡單地當作是字節的生產者和消費者,由數據變成字節,是生產字節、生產流,是Data(數據)Out出流(Stream);由字節恢復成數據,是讀取字節、消費流;翻譯
6. 流的方向很重要,根據流的方向,流可分爲兩類:輸入流和輸出流。流的方向是最難理解和最容易搞糊塗的,具體以下:unix
DataOutputStream:解釋:是對象Data: out出 字節stream, 生產出流, 把數據(Data)變成字節(byte), 把數據寫到內存裏,是以程序中的數據Data爲參照對象,直接翻譯成英文即爲其含義: "(參照物)數據: 輸出流", 是生成字節,因此是寫code
*參照物* ——> Stream 數據轉換成生成字節(byte) Out源 端 ——> 生成流 生產字節htm
把數據 write 成字節保存到內存中對象
DataInputStream:解釋:是對象Data(應該是程序): in進 字節stream變成數據, 消費流, 讀取字節(byte)轉換恢復成數據(Data),是以程序中的數據Data爲參照對象,直接翻譯成英文即爲其含義: "(參照物)數據: 輸入(進)流", 是讀取字節,因此是讀進程
(參照物) <—— Stream 讀取字節(byte)轉換成數據 In目的端 <—— 讀取流 消費字節
從內存中 read 出字節, 轉換成數據
【轉自】http://www.qqread.com/java/2008/08/w427980.html
圖:輸入流
圖:輸出流
對於咱們經常使用的GBK中,英文是佔用1個字節,中文是2個
對於UTF-8,英文是1個,中文是3個
對於Unicode,英文中文都是2個
Java的流操做分爲字節流和字符流兩種