IO流
一、字节流
字节流:可以读写所有类型的文件
1、InputStream 字节输入
一、FileInputStream 节点流输入
1、read()输入|读取
2、close()关闭流。 注意使用完流需要关闭流,遵守后开先关顺序
2、OutputStream 字节输出
一、FileOutStream 节点流输出
1、writec()输出|写入
2、flush()刷出。清理有可能留在流通道的字节
3、close()关闭流
3、字节缓存流Buffered
可以提高执行效率,推荐使用;
一、BufferedInputStream 缓存输入流
二、BufferedOutputStream 缓存输出流
//子类有没有新增方法可以使用多态创建
InputStream is=new BufferedInputStream(new FileInputStream("目标路径"));//创建缓存输入流对象
OutputStream os=new BufferedOutputStream(new FileOutputStream("目标路径"))//创建缓存输出流对象
4、字节对象流Object
支持的数据类型有:基本数据类型+字符串、对象类型:把对象序列化进行存储或者传输
一、ObjectOutputStream 序列化输出
二、ObjectInputStream 反序列化输入 (先序列化再反序列化)
三、被序列化的类需要实现 Serializable
接口。父类实现此接口,子类都可以序列化。子类实现只有子类可以序列化
四、类中不想被序列化的属性可以用 transient
修饰、static
修饰的内容也不会被序列化
五、该子类有新增方法: writeObject() 对象输出 | readObject()对象输入,不能使用多态创建对象,不然不能用子类方法
//对象输入
ObjectInputStream is=new ObjectInputStream(new FileInputStream("目标路径"));
//对象输出
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("目标路径"));
5、字节基本数据流Data
一、DataInputStream 输入
二、DataOutputStream 输出 (先输出再输入才可以正常使用)
三、新增方法:readInt()、readUTF()、writeInt()、writeUTF()…等带类型的输入输入输出方法
//先输出
DataOutputStream os=new DataOutputStream(new FileOutputStream("目标地址"));
//在输入
DataInputStream is=new DataInputStream(new FileInputStream("目标地址"));
二、字符流
自能用于操作文本数据
1、Reader字符输入流
一、FileReader
//1.多态创建
Reader is=new FileReader();
//2.普通创建
FileReader is=new FileReader();
2、Writer字符输出流
一、FileWriter
//1.多态创建
Reader os=new FileWriter();
//2.普通创建
FileWriter is=new FileWriter();
3、字符缓存流
一、BufferedReader 字符输入缓存流
二、BufferedWriter 字符输出缓存流
三、新增方法:readLine()、newLine()
//字符输入缓存流
BufferedReader is=new BufferedReader(new FileReader("目标地址"))
is.readLine(); //读行
is.newLine();//换行
//字符输出缓存流
BufferedReader os=new BufferedWriter(new FileWriher("目标地址"))
三、转换流
1、转换流的实现
//一、输入流
//1.字节输入流→字符输入流
InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"));
//2.字节输入流 → 字符输入流 → 缓冲字符输入流
BufferedReader isr=new BufferedReader(new InputStreamReader
(new FileInputStream("")));
//二、输出流
//1.字节输出流 → 字符输出流
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("a.txt"));
//2.字节输出流 → 字符输出流 → 缓冲字符输出流
BufferedWriter osw1=new BufferedWriter(new OutputStreamWriter
(new FileOutputStream("a.txt")));