Java的输入输出流
- 流:一连串流动的字符,以先进先出的形式发送和接收信息。
文件输入 | 读 |
文件输出 | 写 |
File类的使用
File类
- 文件可认为是相关记录或放在一起的数据的集合
- 在Java中,使用
java.io.File
类对文件进行操作。
创建File类实例的三种方式
- 可以把主目录与子目录分开作为参数进行实例化,下面是三种方式的实例代码。
//方式1,直接把绝对路径作为构造函数参数来构建实例
File file1=new File("c:\\imooc\\io\\score.txt");
//方式2,把父路径和子路径分开作为两个参数来构建实例
File file1=new File("c:\\imooc","io\\score.txt");
//方式3,分两次构建实例
File file=new File("c:\\imooc");
File file1=new File(file,"io\\score.txt");
字节流
- 字节输入流
InputStream
- 字节输出流
OutputStream
字节输入流
文件输入流FileInputStream
- 从文件系统中的某一个文件中获得输入字节;
- 用于读取诸如图像数据之类的原始字节流
方法名 | 描述 |
---|---|
public int read() |
从束流中读取一个数据字节 |
public int read(byte[] b) |
从输入流中将最多b.length个字节的数据读入一个byte数组中 |
public int read(byte[] b, int off, int len) |
从输入流中将最多len个字节的数据读入byte数组中 |
public void close() |
关闭此文件中输入流并释放与此流有关的所有系统资源 |
- 如果返回值为-1,则表示已经到达文件末尾
- 读完文件之后需要使用
close()
方法来释放资源
缓冲输入流BufferedInputStream
- 提高读写速度
- 需要与文件输入输出流结合,把输入流的子类当成构造函数参数输入。
字节输出流
缓冲输入流BufferedOutputStream
- 提高读写速度
- 需要与文件输入输出流结合,把输出流的子类当成构造函数参数输入。
字符流
- 适用于发送和接收字符的情况使用
字符输入流
字符输出流
字节字符转换流
InputStreamReader()
OutputStreamReader()
- 可以把二进制字节流与字符流互相转化
对象的序列化和反序列化
对象序列化
步骤:
- 创建一个类,继承
Serializable
接口; - 创建对象;
- 将对象写入文件;
- 从文件读取对象信息。
- 创建一个类,继承
对象输入流
ObjectInputStream
对象输出流
ObjectOutputStream
序列化:把Java对象转换为字节序列的过程;
反序列化:把字节序列恢复为Java对象的过程。