`
newleague
  • 浏览: 1504275 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

OutputStream和InputStream的区别

阅读更多

很多人刚学习程序流一章的时候,就是搞不清楚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 楼 司c马 2015-08-11  
简介易懂、

相关推荐

    关于InputStream和OutputStream详细讲解

    关于InputStream和OutputStream关于InputStream和OutputStream关于InputStream和OutputStream关于InputStream和OutputStream

    将输出流OutputStream转化为输入流InputStream的方法

    首先,我们需要理解`OutputStream`和`InputStream`这两个核心的I/O类。`OutputStream`是用于写出数据到目的地的流,而`InputStream`则是用于读取数据的流。在Java中,它们是Java.io包下的基础类,提供了多种子类来...

    InputStream与OutputStream及File间互转

    在Java编程语言中,`InputStream`和`OutputStream`是处理数据流的核心类,它们属于Java的I/O(Input/Output)框架。`File`类则用于处理文件操作,如读写、创建、删除等。理解如何在这些对象之间进行转换是Java开发中...

    IO流文档InputStream / OutputStream

    IO流是Java中的一种基本的数据交换方式,通过InputStream和OutputStream可以实现数据的读取和写入,而Reader和Writer可以实现字符流的读取和写入。IO流的知识点很多,需要认真学习和掌握。 InputStream的类型: * ...

    java 文件存储 Inputstream outputstream reader writer的用法

    `InputStream`、`OutputStream`、`Reader`和`Writer`是Java IO流的基础类,它们提供了读写文件的基本接口。本篇文章将深入讲解这些类的用法,并提供实际的代码示例,帮助初学者更好地理解和应用。 1. `InputStream`...

    Java基础核心+InputStream输入流+OutputStream输出流

    本教程将聚焦于Java的基础核心,以及两个重要的I/O(输入/输出)流类——InputStream和OutputStream,它们在文件操作中扮演着关键角色。 InputStream和OutputStream是Java.io包下的抽象类,是所有字节流的基类。...

    java.io.Reader 和 java.io.InputStream 的区别

    此外,值得注意的是,虽然`InputStream`和`OutputStream`以及`Reader`和`Writer`之间存在类似的关系,但在设计上,`InputStream`和`OutputStream`更偏向于底层数据传输,而`Reader`和`Writer`则提供了更高级的字符...

    java io InputStream and outputStream

    InputStream is = new FileInputStream(file1);// 打开文件 byte[] cont = new byte[(int) file1.length()]; is.read(cont);// 读取文件 for (int i = 0; i ; i++) { System.out.print((char) ...

    java-0126递归&过滤器(listFiter)&InputStream&OutputStream

    InputStream 和 OutputStream InputStream 是一种输入流,用于读取数据。InputStream 可以用来读取文件、网络数据等。 OutputStream 是一种输出流,用于写入数据。OutputStream 可以用来写入文件、网络数据等。 ...

    Java中的字节流文件读取教程(一)

    字节流基类包括InputStream和OutputStream,分别作为读字节流和写字节流的基类。所有字节相关的流都必然继承自他们中任意一个。InputStream和OutputStream都是抽象类,定义了最基本的读写操作。 3. InputStream中的...

    Java程序与ZigBee串口通讯的实现.pdf

    在实现ZigBee模块与微机串口的全双工通讯中,需要使用到javax.comm开发包中的CommPortIdentifier、SerialPort、OutputStream和InputStream等类。CommPortIdentifier类用于获取串口的标识符,SerialPort类用于实现...

    handleStream ServletOutputStream out = response.getOutputStream(); InputStream i

    标签中的"源码"提示我们可能需要深入理解`ServletOutputStream` 和`InputStream` 的内部实现,包括它们如何与网络I/O交互,以及如何处理缓冲区和数据编码等问题。而"工具"可能指的是使用这些流类来构建各种服务器端...

    通过jsoup,输入流InputStream爬取图片PaQuPic.rar,有意者入

    6. **处理输入流和输出流**:在处理`InputStream`和`OutputStream`时,确保它们都被正确关闭,避免资源泄漏。这里使用了Java 7的try-with-resources语句,它会在块结束时自动关闭资源。 7. **处理PaQuPic.rar**:...

    java 中InputStream,String,File之间的相互转化对比

    在Java编程中,InputStream、String和File是三个非常基础且重要的类,它们分别代表了数据流、文本字符串和文件对象。在实际开发中,我们经常需要在这三者之间进行转换,以便于处理不同类型的输入输出。以下是关于这...

    Java中输入输出.pdf

    InputStream 类和 OutputStream 类是 Java 中输入输出流的基础类。InputStream 类用于读取数据,而 OutputStream 类用于写入数据。它们都是以字节“byte”为对象做输入与输出的。 三、Reader 和 Writer 类 Reader ...

    软件工程师-浅谈Java的输入输出流技术步骤说明.pdf

    Reader 和 Writer 是基于字符流的,它们是后来加入的,以补充 InputStream 和 OutputStream。 InputStream 和 Reader 定义了完全相同的接口: * int read() * int read(char cbuf[]) * int read(char cbuf[], int ...

    一个通过Socket或URLConnection传文件的示例

    当需要上传或下载文件时,可以设置OutputStream和InputStream来读写数据,例如使用`setDoOutput(true)`开启写入数据的能力,并调用`getOutputStream()`获取输出流。 文件传输的基本步骤如下: 1. **服务器端**:...

    android网络通信方式

    当客户端(Client)连接服务端(Server)成功后,可以使用 OutputStream 和 InputStream 对象进行数据交换。 OutputStream 对象用于将数据写入流中,而 InputStream 对象用于从流中读取数据。通过使用 OutputStream...

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    在XML和Java对象转换的上下文中,Object Stream可能是指将Java对象写入OutputStream或者从InputStream读取,这是Java标准I/O的一部分。XStream允许开发者将复杂的Java对象层次结构轻松地转换成XML,反之亦然,而无需...

Global site tag (gtag.js) - Google Analytics