IO 介绍

IO 是 Input/Output 的缩写,它是基于流模型实现的,比如操作文件时使用输入流和输出流来写入和读取文件等。

IO 分类

传统的 IO,按照流类型我们可以分为:

  • 字符流
  • 字节流

其中,字符流包括 Reader、Writer;字节流包括 InputStream、OutputStream。
传统 IO 的类关系图,如下图所示:

IO 使用

了解了 IO 之间的关系,下面我们正式进入实战环节,分别来看字符流(Reader、Writer)和字节流(InputStream、OutputStream)的使用。

① Writer 使用

Writer 可用来写入文件,请参考以下代码:

// 给指定目录下的文件追加信息
Writer writer = new FileWriter("d:\\io.txt",true);
writer.append("老王");
writer.close();

这几行简单的代码就可以实现把信息 老王 追加到 d:\\io.txt 的文件下,参数二表示的是覆盖文字还是追加文字。

② Reader 使用

Reader 可用来读取文件,请参考以下代码:

Reader reader = new File

第 4-1 课:BIO、NIO、AIO 详解 + 面试题相关推荐

  1. bio阻塞的缺点_java 中的 BIO/NIO/AIO 详解

    java 的 IO 演进之路 我们在前面学习了 linux 的 5 种 I/O 模型详解 下面我们一起来学习下如何使用 java 实现 BIO/NIO/AIO 这 3 种不同的网络 IO 模型编程. ...

  2. java io bio nio aio 详解

    BIO.NIO.AIO的区别: BIO就是基于Thread per Request的传统server/client实现模式, NIO通常采用Reactor模式, AIO通常采用Proactor模式, ...

  3. Java中的IO、NIO、File、BIO、AIO详解

    java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?         Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包 ...

  4. 第 3-4 课:数据结构——队列详解 + 面试题

    队列(Queue):与栈相对的一种数据结构, 集合(Collection)的一个子类.队列允许在一端进行插入操作,而在另一端进行删除操作的线性表,栈的特点是后进先出,而队列的特点是先进先出.队列的用处 ...

  5. BIO、NIO、AIO详解

    一.Java的I/O演进之路 Java共支持3种网络编程的I/O模型:BIO.NIO.AIO BIO: 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启 ...

  6. BIO、NIO、AIO 详解和基于BIO模式下即时通信

    第一章 BIO.NIO.AIO课程介绍 身边同学写的,没发布出来,我算是转载 1.1 课程说明 ​ 在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者 ...

  7. 关于BIO | NIO | AIO的讨论

    关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BIO | NIO | AIO,本身的描述都是在Java语言的基础上的.而描述IO,我们需要从两个 ...

  8. Netty序章之BIO NIO AIO演变

    Netty序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使用 ...

  9. 【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)...

    网上有很多讲同步/异步/阻塞/非阻塞/BIO/NIO/AIO的文章,但是都没有达到我的心里预期,于是自己写一篇出来. 常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数 ...

最新文章

  1. 简述ospf的各种报文
  2. jdk历史各个版本下载
  3. Python编程基础:第五十五节 map函数Map
  4. js md5加密脚本
  5. for each java_Java 实例 - for 和 foreach循环使用
  6. 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
  7. python mysql s_Python-MySQL
  8. 关于秒杀的系统架构优化思路
  9. 如何基于AngularJS部分视图动态更改标头?
  10. ip查询js获取页面属性
  11. TP5 使用redis
  12. 视听说加速器_腾讯加速器台服专享加速线路已开通,多款手游一键即可免费加速!...
  13. 第四单元:丰富的网页媒体
  14. ​秋招上岸,机械转码经历和面经​
  15. MySQL数据库名字能不能用中划线 ‘-’ ?
  16. GB28181监控视频统一汇聚平台LiveGBS将海康大华华为宇视等厂家监控设备统一接入后如何生成固定播放链接或者固定的流地址可以直接无插件播放或者拉取
  17. 明白了虹膜,你就知道人类为什么有如此多样的瞳色了
  18. Ubuntu16.04安装和开机卡在Ubuntu的logo上的解决办法(附加一个Ubuntu的截图工具)
  19. 计算机灾难性恢复,计算机灾难恢复有哪些不同的选择(Different Options for Computer Disaster Recovery)?...
  20. [***Model mj_objectArrayWithKeyValuesArray:]: unrecognized selector sent to class 0x10ace5df0

热门文章

  1. 【Java从入门到头秃专栏 4】语法篇(三) :字符串 数组
  2. Go语言vscode环境配置
  3. EditText焦点问题
  4. 《全球互联网金融商业模式:格局与发展》——第3章,第3节互联网保险公司...
  5. HttpHandler与HttpModule的用处与区别
  6. SQL SERVER重置自动编号列(标识列)
  7. 添加栏目HyperLink
  8. mysql decode语句_MySQL复制问题的分析
  9. 怎么把pdf转换为html,如何将PDF转换成HTML网页格式呢?
  10. [转载] python学习笔记2--操作符,数据类型和内置功能