inputstream outputstream 区别
来源:互联网 发布:linux公社ftp下载 编辑:程序博客网 时间:2024/05/01 01:34
inputstream 抽象了应用程序读取数据的方式
outputstream 抽象了应用程序写出数据的方式
int b = in.read(); 读取一个字节无符号填充到int低八位。-1是EOF
in.read(byte[] buf); 读取数据填充到字节数组buf
来源:http://newleague.iteye.com/blog/802361
区别:
很多人刚学习程序流一章的时候,就是搞不清楚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了
0 0
- inputstream outputstream 区别
- Reader/Writer与InputStream/OutputStream的区别
- Java中InputStream和OutputStream的区别
- InputStream和OutputStream之间的区别
- outputstream inputstream
- outputstream inputstream
- InputStream OutputStream
- InputStream & OutputStream
- InputStream OutputStream
- InputStream && OutputStream
- inputStream&&OutputStream
- OutputStream/InputStream
- JDK 文档之 -- OutputStream 和 InputStream 的区别
- OutputStream和InputStream的区别 + 实现java序列化
- java中Inputstream和outputstream有什么区别
- InputStream 和OutputStream
- InputStream 和OutputStream
- OutputStream 转 InputStream
- 实战c++中的string系列--string的连接(+= or append or push_back)
- NULL 0 和 nullptr
- 跨浏览器添加事件+跨浏览器移除事件+获取浏览器目标对象+跨浏览器输入文本的光标自动跳转+跨浏览器输入验证+跨浏览器屏蔽
- uva 10163——Storage Keepers
- 交友的基本配置
- inputstream outputstream 区别
- 跨浏览器兼容选择部分文本+跨浏览器获取字符编码
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 基于rails的schedule网站开发(11):记住我
- PAT已级试题 1009. 说反话
- ARMv8 架构与指令集.学习笔记
- bzoj1143[CTSC2008]祭祀river
- 编写高质量iOS与OS X代码的52个有效的方法 之协议与分类
- PHP cookie session 及 ThinkPHP session 详解