InputStream和OutputStream的比较
来源:互联网 发布:opencv骨架提取算法 编辑:程序博客网 时间:2024/04/30 20:16
InputStream和OutputStream的比较
学习IO流的时候,很长一段时间一直搞不清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了
===========================================================
加点自己的理解,以实际的工作场景出发,
1. 需要读取一个文件(并写到内存中)以新建一个对象,则用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();
- InputStream和OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream与OutputStream的比较
- InputStream和OutputStream的理解
- Java中Inputstream和OutputStream比较
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- JAVA的InputStream和OutputStream的理解
- java的InputStream和OutputStream的理解
- Android图片剪裁-调用系统实现,完美适配魅族等机型
- c#中取整,向上取,向下取
- Android自定义倒计时控件
- 红黑树详讲--有图有思路
- tomcat部署web项目的3中方法
- InputStream和OutputStream的比较
- Winform 利用ThoughtWorks.QRCode 生成二维码,并另存为二维码图片(限制大小)
- 深入理解Android的startservice和bindservice
- python 函数
- oralce 产生随机数
- LeetCode 007: Reverse Integer
- ORA-00984列在此处不允许
- 贝叶斯估计
- C的|、||、&、&&、异或、~、!运算符