Java IO流:基本概念

一、IO 概念

・I/O 即输入 Input/ 输出 Output 的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程;

・java 中用 “流(stream)” 来抽象表示这么一个写入写出的功能,封装成一个 “类”,都放在 java.io 这个包里面。

二、IO 流的分类

通过 “流” 的形式允许 java 程序使用相同的方式来访问不同的输入 / 输出源。stream 是从起源(source)到接收的(sink)的有序数据。我们这里把输入 / 输出源对比成 “水桶”,那么流就是 “管道”,这个 “管道” 的粗细、单向性等属性也就是区分了不同 “流” 的特性。

按照 流的方向 进行分类:
以内存作为参照物:

往内存中去:叫做输入 (Input)。或者叫做读 (Read)。

 

从内存中出来:叫做输出 (Output)。或者叫做写 (Write)。 

 

按照 读取数据方式 不同进行分类:
按照 字节 的方式读取数据,一次读取 1 个字节 byte,等同于一次读取 8 个二进制位。
这种流是万能的,什么类型的文件都可以读取。包括:文本文件,图片,声音文件,视频文件 等…

按照 字符 的方式读取数据的,一次读取一个字符。
这种流是为了方便读取普通文本文件而存在的,这种流不能读取:图片、声音、视频等文件。只能读取纯文本文件,连 word 文件都无法读取。

注意:
纯文本文件,不单单是.txt 文件,还包括 .java、.ini、.py 。总之只要 能用记事本打开 的文件都是普通文本文件。

eg.
假设文件file1.txt,采用字符流的话是这样读的:
a中国bc张三fe
第一次读:'a’字符('a’字符在windows系统中占用1个字节。)
第二次读:'中’字符('中’字符在windows系统中占用2个字节。)

 综上所述:流的分类:

  • 输入流、输出流
  • 字节流、字符流

根据传输数据单位分为字节流和字符流

  • 字节流:以字节为单元,可操作任何数据(由 InputStream 和 outPutStream 作为基类)
  • 字符流:以字符为单元,只能操作纯字符数据,(由 Reader 和 Writer 作为基类)
  • 字节流
  1. java.io.InputStream 字节输入流
  2. java.io.OutputStream 字节输出流
  • 字符流
  1. java.io.Reader 字符输入流
  2. java.io.Writer 字符输出流

以上 4 个类都是抽象类。

所有的流都实现了:
java.io.Closeable 接口,所有流都实现 close () 方法。流是一个管道,是内存和硬盘之间的通道,用完之后一定要 close (),不然会耗费 (占用) 很多资源。用完流一定要关闭。
所有的输出流都实现了:
java.io.Flushable 接口,所有流都实现 flush () 方法。刷新 flush () 表示将通道 / 管道当中剩余未输出的数据强行输出完(清空管道!)刷新的作用就是清空管道。输出流在最终输出之后,一定要 flush () 刷新一下。

三、Java 要掌握的流(16 个)

文件专属:
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter


转换流:(将字节流转换成字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter


缓冲流专属:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream


数据流专属:
java.io.DataInputStream
java.io.DataOutputStream


标准输出流:
java.io.PrintWriter
java.io.PrintStream


对象专属流:
java.io.ObjectInputStream
java.io.ObjectOutputStream


File 文件类
java.io.File
 

后续章节会对以上流进行逐个介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值