day16 IO流
IO的分类
根据数据的流向分为:输入流和输出流。
-
输入流 :把数据从
其他设备
上读取到内存
中的流。 -
输出流 :把数据从
内存
中写出到其他设备
上的流。
根据数据的类型分为:字节流和字符流。
-
字节流 :以字节为单位,读写数据的流。字节可以读写所有数据,用记事本打开如果你看不懂,就用字节
-
字符流 :以字符为单位,读写数据的流。字符一般只操作文本,用记事本打开如果你能看懂,就用字符
IO顶级父类们
名称 | 输入流 | 输出流 |
---|---|---|
字节流 | 字节输入流InputStream | 字节输出流OutputStream |
字符流 | 字符输入流Reader | 字符输出流Writer |
中文在不同编码格式中注意
GBK:占2个字符
utf-8:占3个字符
字节流
一切文件数据(文本、图片、视频等)在传输存储中使用的流,底层都是字节流
注意
在字节流中用换行符 "\r\n"
OutputStream
特点
抽象类 只有一个无参构造方法 是所有字节输出类的超类
所有方法
方法名 | 说明 |
---|---|
public abstract void write(int b) | 将指定的字节输出流。 |
public void write(byte[] b) | 将 b.length字节从指定的字节数组写入此输出流。 |
public void write(byte[] b, int off, int len) | 从指定的字节数组写入 len字节,从偏移量 off开始输 |
public void close() | 关闭此输出流并释放与此流相关联的任何系统资源。 |
public void flush() | 刷新此输出流并强制任何缓冲的输出字节被写出。 |
FileOutputStream
文件输出流,用于将数据写出到文件(笔记、图片、视频等都是都是文件)
常用构造方法
方法名 | 解释 |
---|---|
FileOutputStream(File file) | 创建文件输出流以写入由指定的 File 对象表示的文件 |
FileOutputStream(File file, boolean append) | 创建文件输出流以写入由指定的 File 对象表示的文件。 |
FileOutputStream(String name) | 创建文件输出流以指定的名称写入文件。 |
FileOutputStream(String name, boolean append) | 创建文件输出流以指定的名称写入文件。 |
注意
当使用FileOutputStream(File file) 和FileOutputStream(String name)创建一个文件时,要是创建之前就有该文件,则该文件清空,放入出入的数据,要是没有创建该文件,每次运行覆盖原来的数据 注意,第二个参数默认false
要是使用FileOutputStream(File file, boolean append)和FileOutputStream(String name, boolean append) 创建对象并且第二个参数市true时,则不是覆盖而是在后面添加,若是false则和上面的一样
InputStream
特点
抽象类 只有一个无参构造 是表示字节输入流的所有类的 超类
常用方法
方法名 | 说明 |
---|---|
public void close() | 关闭此输入流并释放与此流相关联的任何系统资源。 |
public abstract int read() | 从输入流读取数据的下一个字节。 |
public int read(byte[] b) | 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。 |
read(byte[] b, int off, int len) | 从输入流读取最多 len 字节的数据到一个字节数组 |
FileInputStream类
文件输入流,用于将数据写出到文件(笔记、图片、视频等都是都是文件)
常用构造方法
-
-
方法名 解释 FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream
,该文件由文件系统中的File
对象file
命名FileInputStream(String name) | 通过打开与实际文件的连接来创建一个
FileInputStream,该文件由文件系统中的路径名
name`命名。
-
常用方法
方法名 | 解释 |
---|---|
close() | 关闭此文件输入流并释放与流相关联的任何系统资源。 |
int read() | 从该输入流读取一个字节的数据。 |
int read(byte[] b) | 从该输入流读取最多 b.length 个字节的数据为字节数组。 |
int read(byte[] b, int off, int len) | 从该输入流读取最多 len 字节的数据为字节数组。 |