国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

InputStream與OutputStream的比較

2019-11-14 10:08:26
字體:
來源:轉載
供稿:網友

記得剛學習程序流一章的時候,就是搞不清楚In和Out,不知道什么時候用in什么時候用out,所以一部分人采取死記硬背的方式

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(“infilename”))); 不管你從磁盤讀,從網絡讀,或者從鍵盤讀,讀到內存,就是InputStream。 寫文件 BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(“outfilename”))); 不管你寫倒磁盤,寫到網絡,或者寫到屏幕,都是OuputStream。

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

好吧,老程序員可以關閉該頁面了!

我們所說的流,都是針對內存說的,比如為什么打印到屏幕上就是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了

===========================================================

加點自己的理解,以實際的工作場景出發,

需要讀取一個文件(并寫到內存中)以新建一個對象,則用in

X509Certificate cert = (X509Certificate) CertificateFactory.getInstance(“X.509”) .generateCertificate(new ByteArrayInputStream(Base64.decode(CERTIFICATE))); 2. 需要輸出(產生)一個文件,或者打印某對象到控制臺以便debugging,就用out:

OutputStream out = new ByteArrayOutputStream(); TransformerFactory.newInstance().newTransformer().transform(returnMessage.getPayload(), new StreamResult(out)); String result = ((ByteArrayOutputStream) out).toString();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铁力市| 辽阳市| 全州县| 永仁县| 噶尔县| 黄陵县| 洪洞县| 清河县| 鸡西市| 屯留县| 敖汉旗| 体育| 区。| 孟津县| 轮台县| 铁岭市| 汉源县| 奉贤区| 盘山县| 昌邑市| 恭城| 招远市| 马山县| 化德县| 安徽省| 崇州市| 萨迦县| 敦煌市| 曲松县| 衡阳县| 阳新县| 沛县| 喜德县| 南阳市| 铜川市| 明溪县| 宁明县| 航空| 正蓝旗| 莫力| 正定县|