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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

InputStream與OutputStream的比較

2019-11-11 03:44:10
字體:
供稿:網(wǎng)友

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

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename")));不管你從磁盤讀,從網(wǎng)絡(luò)讀,或者從鍵盤讀,讀到內(nèi)存,就是InputStream。

寫文件BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename")));不管你寫倒磁盤,寫到網(wǎng)絡(luò),或者寫到屏幕,都是OuputStream。

那么有什么好方法不用背就能記住呢,即使是反應(yīng)稍微慢點,但是絕對不會錯的方法呢?好吧,老程序員可以關(guān)閉該頁面了!我們所說的流,都是針對內(nèi)存說的,比如為什么打印到屏幕上就是System.out.PRintln();而從屏幕等待用戶輸入的卻是System.in呢?因為對于內(nèi)存來說,把字符串打印到屏幕上是從內(nèi)存流向屏幕這個顯示器的,也就是輸出,而從屏幕等待用戶輸入呢?就是等待鍵盤將字符輸入到內(nèi)存中。根本就不用死記硬背,當(dāng)你遇到IO的時候,就想兩件事,第一,我的內(nèi)存是中心,第二看看流的方向(矢量)!好吧,那么往硬盤上寫文件是out還是in呢?別一看到“寫”文件你就說in,那是望文生義,你看,寫文件的流向,是 內(nèi)存---------->硬盤 內(nèi)存為中心,到硬盤,OK 用out 那么就是FileOutputStream、BufferedOutputStream 等等那讀文件呢?是 內(nèi)存<---------------硬盤 那么就是in了 , 看清楚數(shù)據(jù)的流向就OK!那我訪問網(wǎng)絡(luò),看網(wǎng)頁是什么呢 網(wǎng)絡(luò)--------------->內(nèi)存 是in 因為我們訪問頁面是要抓取該頁面得一個html文件,那我要是在網(wǎng)絡(luò)上輸入帳號密碼登陸呢? 是不是內(nèi)存的東西要寫到該服務(wù)器上呢,所以當(dāng)然是out了!同樣socket編程用到更多的IO,這里分別用Server(服務(wù)器端)和Client(客戶端)來說明Server: 遇到請求,網(wǎng)絡(luò)----->內(nèi)存 IN   服務(wù)器應(yīng)答, 內(nèi)存------->網(wǎng)絡(luò) OUT----------------------------------------------------------------------------------------------Client: 請求服務(wù),    內(nèi)存----->網(wǎng)絡(luò) OUT 服務(wù)器應(yīng)答, 網(wǎng)絡(luò)------->內(nèi)存 IN

內(nèi)存的數(shù)據(jù)出去了就是out 外設(shè)的東西到內(nèi)存了就IN了

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

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

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

X509Certificate cert = (X509Certificate) CertificateFactory.getInstance("X.509")                                                                   .generateCertificate(new ByteArrayInputStream(Base64.decode(CERTIFICATE)));

2. 需要輸出(產(chǎn)生)一個文件,或者打印某對象到控制臺以便debugging,就用out:

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁陵县| 得荣县| 遂宁市| 子洲县| 唐海县| 得荣县| 互助| 清流县| 房产| 封丘县| 宁阳县| 花莲市| 和静县| 鞍山市| 观塘区| 富蕴县| 永善县| 鹤壁市| 绥芬河市| 揭东县| 汾西县| 镇雄县| 馆陶县| 青冈县| 抚顺县| 沙坪坝区| 双鸭山市| 永顺县| 兴宁市| 泸溪县| 绥中县| 尼玛县| 南郑县| 壤塘县| 临邑县| 巴林左旗| 定结县| 会泽县| 崇礼县| 赤峰市| 清流县|