用 Java 的 IO 流进行读写文件操作

前言

在计算机领域里 IO,有时也写作 I/O,是Input / Output的缩写,也就是输入和输出。这里的输入和输出是指不同系统之间的数据输入和输出,比如读写文件数据,读写网络数据等等。

本文内容大纲如下:

Java 有哪些IO框架

Java 中有三代 IO 框架,分别是第一代的同步阻塞 IO (也叫 BIO, Blocking IO),第二代的NIO ,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层的高性能数据操作方式。第三代 NIO2 有的地方也叫 AIO,即Async IO,进一步支持了异步IO。

这些 IO 框架都是针对文件的,网络通信同样属于 IO 行为,但是被 Java 单独放在了 java.net 包下,不在这里说的 IO 体系内。

这个教程中我们来学习 Java IO 体系中最简单和易于理解的同步阻塞 IO,后面有了这里的知识积累后再去进一步学习 NIO 和 AIO。

BIO 简介

同步阻塞 IO 即 BIO(blocking IO),指的主要是传统的 java.io 包,它基于流模型实现。java.io 包提供了我们最熟知的一些 IO 功能,比如 File 对象提供的文件和目录操作,还有一大块就是通过输入输出流读写文件等。

BIO 交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在完成之前,线程会一直阻塞在那里。多个 IO 调用的执行顺序是线性顺序。不过 BIO 的优点是代码比较简单、直观,虽然不适合在高并发场景下使用,但足够应对普通场景,同时也更容易学习和掌握。

IO 流

IO 流是 Java IO 中的核心概念。流是在概念上表示无穷无尽的数据流。IO 流连接到数据源或数据的目的地,连接到数据源的叫输入流,连接到数据目的地的叫输出流。 Java 程序不能直接从数据源读取和向数据源写入,只能借助 IO 流从输入流中读取数据,向输出流中写入数据。

Java IO 中的流可以是基于字节的(读取和写入字节)也可以基于字符的(读取和写入字符),所以分为字节流和字符流,两类流根据流的方向都可以再细分出输入流和输出流。

  • 字节流
    • 输入字节流:InputStream
    • 输出字节流:OutputStream
  • 字符流
    • 输入字符流:Reader
    • 输出字符流:Writer

这里有一点可能容易让人迷惑的是,IO中的输入和输出指的是相对于程序的输入和输出,程序向外输出内容,会向输出流里写入,虽然写入操作看似是输入,但相对于程序本身而言它是在向外输出内容。所以程序写的是OutputStream 读的是InputStream

字节流<

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值