數據流
1.什么是數據流[1]

2.數據流的分類[2]
數據的性質、格式不同,則對流的處理方法也不同,因此,在Java的輸入/輸出類庫中,有不同的流類來對應不同性質的輸入/輸出流。在java.io包中,基本輸入/輸出流類可按其讀寫數據的類型之不同分為兩種:字節(jié)流和字符流。
(1)輸入流與輸出流
數據流分為輸入流(InputStream)和輸出流(OutputStream)兩類。輸入流只能讀不能寫,而輸出流只能寫不能讀。通常程序中使用輸入流讀出數據,輸出流寫入數據,就好像數據流入到程序并從程序中流出。采用數據流使程序的輸入輸出操作獨立與相關設備。
輸入流可從鍵盤或文件中獲得數據,輸出流可向顯示器、打印機或文件中傳輸數據。
(2)緩沖流
為了提高數據的傳輸效率,通常使用緩沖流(Buffered Stream),即為一個流配有一個緩沖區(qū)(buffer),一個緩沖區(qū)就是專門用于傳輸數據的內存塊。當向一個緩沖流寫入數據時,系統(tǒng)不直接發(fā)送到外部設備,而是將數據發(fā)送到緩沖區(qū)。緩沖區(qū)自動記錄數據,當緩沖區(qū)滿時,系統(tǒng)將數據全部發(fā)送到相應的設備。
當從一個緩沖流中讀取數據時,系統(tǒng)實際是從緩沖區(qū)中讀取數據。當緩沖區(qū)空時,系統(tǒng)就會從相關設備自動讀取數據,并讀取盡可能多的數據充滿緩沖區(qū)。
3.數據流的基本操作[3]
1.生成數據流的基本過程
數據流由一系列的節(jié)點組成,當數據通過每個節(jié)點時,節(jié)點對它進行定義好的操作。建立數據流通常遵循以下4個步驟:
(1)向數據流區(qū)域增添新的節(jié)點;
(2)將這些節(jié)點連接到數據流中;
(3)設定數據節(jié)點或數據流的功能:
(4)運行數據流。
2.向數據流區(qū)域添加,刪除節(jié)點
當向數據流區(qū)域添加新的節(jié)點時,通過下面3種方法均可實現:
(1)雙擊選項板區(qū)中待添加的節(jié)點。
(2)單擊待添加節(jié)點,按住鼠標不放,將其拖入數據流區(qū)域內。
(3)先選中選項板區(qū)中待添加的節(jié)點,然后將鼠標放入數據流區(qū)域,在鼠標變?yōu)槭中螘r單擊數據流區(qū)域的任何空白處。
通過上面3種方法都將發(fā)現選中的節(jié)點出現在了數據流區(qū)域內。當不再需要數據流區(qū)域內的某個節(jié)點時,可以通過以下兩種方法來刪除:
(1)單擊待刪除的節(jié)點,按Delete鍵刪除。
(2)右擊待刪除的節(jié)點,在快捷菜單中選擇delete命令。
注意,刪除一個節(jié)點后,與之相連的所有連接也將一并被刪除。
3.將節(jié)點連接到數據流中
上面介紹了將節(jié)點添加到數據流區(qū)域的方法,然而要使節(jié)點真正發(fā)揮作用,需要把節(jié)點連接到數據流中。以下有3種方法可將節(jié)點連接到數據流中:
(1)雙擊節(jié)點。首先選中數據流中要連接新節(jié)點的節(jié)點(起始節(jié)點),然后雙擊選項板區(qū)中要添加到數據流的節(jié)點(目標節(jié)點),這樣新節(jié)點會出現在數據流區(qū)域,并自動建立從起始節(jié)點到目標節(jié)點的連接。
(2)通過Alt鍵連接。首先在數據流中選中連接起始節(jié)點,按住Alt鍵不放,然后用鼠標將起始節(jié)點拖曳到目標節(jié)點后放開,連接便自動生成。
(3)手動連接。右擊待連接的起始節(jié)點,從彈出的快捷菜單中選擇“連接…”命令,然后用鼠標單擊目標節(jié)點,連接便自動生成。
需要注意的是,并不是任何兩個節(jié)點之間都可以建立連接。
4.繞過數據流中的節(jié)點
當暫時不需要數據流中的某個節(jié)點時可以繞過該節(jié)點。在繞過它時,如果該節(jié)點既有輸入節(jié)點又有輸出節(jié)點,那么它的輸入節(jié)點和輸出節(jié)點便直接相連;如果該節(jié)點沒有輸出結點,那么繞過該節(jié)點時與這個節(jié)點相連的所有連接便被取消。
方法:按住Alt鍵不放,然后雙擊數據流中需要繞過的節(jié)點,如圖2所示。

5.將節(jié)點插入已存在的連接中
當需要在兩個已連接的節(jié)點中再插入一個節(jié)點時,可以用鼠標將連接拖到要插入的節(jié)點上,即可將節(jié)點插入到連接中,如圖3所示。同時原來兩個節(jié)點間的連接被刪除。
6.刪除連接
當某個連接不再需要時,可以通過以下兩種方法將其刪除:
(1)選擇待刪除的連接,右擊,從彈出的快捷菜單中選擇“刪除連接”命令。
(2)選擇待刪除連接的節(jié)點,按F3鍵,刪除所有連接到該節(jié)點上的連接。
7.數據流的執(zhí)行
數據流構建好后要通過執(zhí)行數據流數據才能從讀入開始流向各個數據節(jié)點。執(zhí)行數據流的方法有以下3種。
(1)單擊菜單欄中的?按鈕,數據流區(qū)域內的所有數據流將被執(zhí)行。
(2)先選擇要輸出的數據流,再單擊菜單欄中的?按鈕,被選的數據流將被執(zhí)行。
(3)選擇要執(zhí)行的數據流中的輸出節(jié)點,右擊,在彈出的快捷菜單中選擇“執(zhí)行”命令,執(zhí)行被選中的節(jié)點。
4.數據流描述方式[4]
一般使用持續(xù)賦值語句描述數據流程的運動路徑、運動方向和運動結果的設計方法,稱為數據流描述方法。
【例】module NAND2_G(A,B,F); //模塊聲明及輸入輸出端口列表
input A,B; //定義輸入端口
output F; //定義輸出端口
assign F=~(A&B); //數據流描述
endmodule //模塊結束
對于表達式assign F=~(A&B);右邊的操作數A、B無論何時發(fā)生變化,都會引起表達式值的重新計算,并將重新計算后的值賦予左邊的網線變量F。