2019独角兽企业重金招聘Python工程师标准>>>

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了

转载于:https://my.oschina.net/u/1464678/blog/212790

JAVA IO操作中的IN和OUT问题相关推荐

  1. java io运用_Java IO相关使用

    date: 2020-06-14 14:42:22 updated: 2020-08-21 17:35:45 Java IO相关使用 1. 文件 创建 File 对象的三种方式 一个路径名:File( ...

  2. java 常用类库_JAVA(三)JAVA常用类库/JAVA IO

    成鹏致远 |lcw.cnblog.com|2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同, ...

  3. Java IO(BIO, NIO, AIO) 总结

    文章转载自:JavaGuide 目录 BIO,NIO,AIO 总结 同步与异步 阻塞和非阻塞 1. BIO (Blocking I/O) 1.1 传统 BIO 1.2 伪异步 IO 1.3 代码示例 ...

  4. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  5. Java IO(五)——字符流进阶及BufferedWriter、BufferedReader

    一.字符流和字节流的区别 拿一下上一篇文章的例子: 复制代码 复制代码 1 package com.demo.io; 2 3 import java.io.File; 4 import java.io ...

  6. Java - IO流学习笔记

    1.文件和文件夹 内存中存放的数据信息在计算机关机后就会消失,如果想要长久的保存数据,就需要使用到光盘.硬盘等设备,为了便于数据的管理以及检索,引入了"文件"的概念.一篇文章,一个 ...

  7. Java IO完全总结(转载) --- 重点在源码分析

    转载自https://blog.csdn.net/baobeisimple/article/details/1713797 个人认为前面对于输入输出流(超类)的 继承结构,仅仅作为参考知识了解,如果想 ...

  8. java IO学习心得

    File类: 在整个io包中,唯一表示与文件有关的类就是File类.使用File类可以进行创建或者删除文件等常用的操作.要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下: ...

  9. Java IO框架之BIO、NIO、AIO

    我是傲骄鹿先生,沉淀.学习.分享.成长. 如果你觉得文章内容还可以的话,希望不吝您的「一键三连」,文章里面有不足的地方希望各位在评论区补充疑惑.见解以及面试中遇到的奇葩问法 目录 一.概述 二.BIO ...

最新文章

  1. 引人遐想,用 Python 获取你想要的 “某个人” 摄像头照片
  2. python运行慢-Python运行效率慢?因为你不知道这六大窍门!
  3. android linux内核开发环境,定制Android 4.2.2开发环境
  4. ejb 2.0 3.0_EJB 3.0注入和查找简介
  5. react jquery_2019年React简介(面向仅了解jQuery的人们)
  6. 作业帮:字符串反转(头部插入)
  7. macos big sur永久关闭final cut Pro通知的技巧
  8. 基于Ubuntu的ESP32平台搭建
  9. webservice框架 java_JAVA开发Web Service几种框架介绍
  10. python numpy 中linspace函数
  11. linux 远程22端口打开,kali如何手动打开22端口
  12. chrome操作系统_如何在Chrome和Chrome操作系统上使用Google Play电影
  13. 文档型非关系数据库MongoDB经验总结
  14. Anonympy——使用Python进行数据匿名化
  15. react中input输入框显示字数
  16. 字符串和时间转换sql
  17. Jsoup-爬取实战
  18. 人工智能的影响是大众还是小众,对我们的职业有什么影响?
  19. 这三种人不适合“裸辞”!
  20. ft232h引脚_基于FT2232H的USB-RS232转换模块设计

热门文章

  1. 安全配置交换机端口 提高网络安全性
  2. nagios全攻略(三)----使用插件监控更多信息
  3. DHCP Snooping的作用
  4. PostgreSQL 10.0 preview 功能增强 - 后台运行(pg_background)
  5. 介绍两个Eclipse插件: Implementors Call Hierarchy
  6. Thread Dump 和Java应用诊断(转)
  7. 抓取apache2的进程pid
  8. Linux下Tomcat重新启动
  9. linux symbolic link attack tutorial
  10. C#GDI+图像处理