1. 程式人生 > >InputStream與OutputStream歸納

InputStream與OutputStream歸納


那麼有什麼好方法不用背就能記住呢,即使是反應稍微慢點,但是絕對不會錯的方法呢?

好吧,那我就來說說,老程式設計師可以關閉該頁面了!

我們所說的流,都是針對記憶體說的,比如為什麼列印到螢幕上就是System.out.println();而從螢幕等待使用者輸入的卻是System.in呢?因為對於記憶體來說,把字串列印到螢幕上是從記憶體流向螢幕這個顯示器的,也就是輸出,而從螢幕等待使用者輸入呢?就是等待鍵盤將字元輸入到記憶體中。

所以,你根本就不用死記硬背,當你遇到IO的時候,就想兩件事,第一,我的記憶體是中心,第二看看流的方向(向量)!

好吧,那麼往硬碟上寫檔案是out還是in呢?別一看到“寫”檔案你就說in,那是望文生義,你看,寫檔案的流向,是 記憶體---------->硬碟 記憶體為中心,到硬碟,OK 用out 那麼就是FileOutputStream、BufferedOutputStream 等等
那讀檔案呢?是 記憶體<---------------硬碟 那麼就是in了 , 看清楚資料的流向就OK!

那我訪問網路,看網頁是什麼呢 網路--------------->記憶體 是in 因為我們訪問頁面是要抓取該頁面得一個html檔案,那我要是在網路上輸入帳號密碼登陸呢? 是不是記憶體的東西要寫到該伺服器上呢,所以當然是out了!

同樣socket程式設計用到更多的IO,這裡分別用Server(伺服器端)和Client(客戶端)來說明

Server: 遇到請求,網路----->記憶體 IN 伺服器應答, 記憶體------->網路 OUT
----------------------------------------------------------------------------------------------
Client: 請求服務, 記憶體----->網路 OUT 伺服器應答, 網路------->記憶體 IN

被搞糊塗了?那麼你先別想太多,只是想是記憶體的資料出去了就是out 外設的東西到記憶體了就IN了

以前計算機考試經常考的弱智問題不知道現在還考不考,那就是計算機由幾部分組成,分別是什麼?這道題通常會出現在試卷的第一題
我想,現在依然有人不會,答(弱智問題):計算機由5部分組成 1 控制器 2 計算器 3 儲存器 4 輸入 5 輸出

這個問題是世界上所有的計算機的組成要素,包括“銀河”、“曙光”等大家都沒見過的國家用的那種龐大的計算機。那我們用的計算機和“銀河”不一樣嗎?從這道題上回答是一樣的。要說不一樣,只能說硬體結構和指令系統不一樣罷了

我們現在用的計算機,外行都叫電腦,我從來不說電腦,因為不專業,它還夠不上大腦的要素,他不會思維,他是按照人們安排的指令無條件執行的。

那麼我們的計算機(PC personal computer)是如何構造的呢?

1控制器 2計算器 :我們都叫他CPU(Center Process Unit 中央處理單元或叫中央處理器),他遵循IBM X86架構,我們用的計算機的處理器(計算機心臟)被硬體商將控制器和計算器整合到一起了,所以有時叫做微處理器,CPU既負責控制計算機又負責計算

3儲存器:有兩種分類方法,1)儲存器分為記憶體和外存,2)儲存器分為RAM(隨機儲存器)和ROM(只讀儲存器)。 記憶體,大家都知道,一切資料都必須經過記憶體,比如,執行的程式,從硬碟讀取的電影,記憶體又叫做隨機儲存器(RAM),也就是說資料可以隨機的進入記憶體的某個地址(由作業系統管理),但是隻要掉電它裡邊的資料就沒了。

硬碟,也是隨機儲存器,你所看到硬盤裡一個一個羅列的檔案像是整齊的在排列,其實那時邏輯上的,學過資料結構的人應該知道,硬碟分為控制區和資料區,資料區是放使用者資料的,而控制區其實就是放的指標地址,他所索引它的前置資料和後置資料,我們買硬碟的時候硬體商人告訴我們這是80G的硬碟,實際上我們看到只有72G左右,就是這個道理,不是“奸商”所為,而是計算不同,硬碟出廠時,廠家計算容量是以硬碟的總容量來計算的,也就是說硬碟的容量=資料區+控制區,而我們在作業系統裡,或者說引導盤格式化完後看到的是資料區總容量,丟失的那些容量其實是控制區的,它對於使用者不可見,只有作業系統才能用它

ROM、RAM:ROM從名字看出就是存進去不能在寫的儲存器,比如CD-ROM DVD-ROM 當然現代的儲存器高階了,還有CD-R CD-RW DVD-R DVD-RW 他不就不是隻讀的了嗎?我要說明的是,它還是ROM,為什麼,不是可寫了嗎?但是他是相對只讀,你給我像硬碟一樣往裡寫點東西我看看,只是技術的進步,材料的進步,我們可以用驅動器 將鐳射的能量在ROM裡改變一些材料的物理特性,實現可寫,但一旦燒錄完成,它就不再可寫了,有人會反駁,那RW呢,你不記得當你要改變光盤裡的東西的時候要擦除光碟的資料嗎?RW是有使用次數的,當你燒錄若干次之後,他將永遠不能刻錄了,ROM不可能像硬碟一樣你想什麼時候寫就什麼時候寫。當然有人混淆了ROM和光碟機的概念,ROM就是我們的光碟,比如DVD-ROM CD-ROM,而光碟機呢,就是驅動該ROM的裝置,就想硬盤裡有碟片,外邊的殼子是驅動那個磁碟片轉動的,現在可能大多數人沒見過軟盤驅動器了,只有個別的低端伺服器上偶爾能見到,磁碟驅動器和硬碟是一個道理的,用磁頭夾著盤面進行讀寫,有3寸盤、5寸盤,當然還有我沒見過的Zip盤。

4輸入:輸入有什麼?鍵盤、攝像頭、遊戲機手柄(計算機用)、滑鼠、觸控板、軌跡球、DVD-ROM等等了,為什麼叫輸入?因為它上面的資料最終都要進入記憶體阿!

5輸出:輸出比如顯示器、印表機。有人會說,我的顯示器是手寫的,算輸入不?我告訴你的是,其實手寫是手寫、顯示器是顯示器,手寫是輸入,它通過電流感應等技術做成的,螢幕上有微弱的電流流過,當你的手指阻擋了電流,那麼,改點就被識別,當然這裡有其他的實現技術,有興趣的可以查。
————————————————————————————————————————————————————————————————————