什么是IO流
IO流是Java中的一个重要构成部分,也是我们经常打交道的。
数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output,即流向内存是输入流,流出内存的输出流。
Java中l/0操作主要是指使用 java.o 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据
IO流的分类
根据数据的流向分为:输入流和输出流。
- 输入流 : 把数据从其他设备上读取到内存中的流。
- 输出流: 把数据从内存中写出到其他设备上的流
格局数据的类型分为:字节流和字符流
- 字节流 : 以字节为单位,读写数据的流
- 字符流 : 以字符为单位,读写数据的流
注意:一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。
字节输出流的方法
字节输入流的方法
构造方法
字符流
【字符流】:以字符为基本单位,读写数据的流
字符输入流:以字符为基本单位,读数据
字符输出流:以字符为基本单位,写出数据
- 字符输入流:顶层父类:Reader --> 抽象类 常见子类:FileReader
- 字符输出流:顶层父类:Writer --> 抽象类 常见子类:FileWriter
字符流的操作步骤
是一个阅读字符文件的便利类,是专门处理字符文件的,比如txt文件。音频视频图片
是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集
牵涉到解码,底层是字节流,但是会解码为字符。如果解码失败就意味着咱们读取失败了
一般不会使用字符流操作图片 音频 视频等,因为牵涉到解码。会出问题!!!
开发一般使用字节流!!!
注意:
字符流中可以写出中文String一般也是使用字符流来读取txt文件。