字符输出流
Writer 抽象类 子类:FileWriter
一次输出一个字符 可以写出读入汉字咯
创建字符输出流对象
//方式一:
Writer writer = new FileWriter("文件地址");
//方式二:
Writer writer = new FileWriter(new file("文件地址"));
后面可加bollean append参数,true则追加
写出数据
writer(int)
writer(String)
writer(char[])
writer(char[], off, len)
字符输出流内部有一个缓冲区
writer(97) 将数据(a)写出缓冲区
flush() 刷出 将数据写到磁盘中
关闭资源
关掉资源后 不需要 手动flush,也会将缓冲区的数据 刷出 到磁盘上
双重保险: 同时flush() close()
字符输入流
Reader 抽象类 通过子类:FileReader
创建字符输入流对象
同上,但必须存在这个文件
读取数据
read() 拿到编码值
返回int ,拿到对应字符的编码值,可以进行强转(char)
一点一点往后读, 若拿到-1表示文件内的资源已经读取完了
注意:
- 若发现强转后 出现乱码,那么就是 编码 的问题
- 使用 字符输入流读取数据时 存储数据的文件编码类型 要与代码编辑器的类型一致
关闭资源
close()
用byte[]数组 读取数据的
区别在于char[] bytes = new char[20];
创建的是字符数组
其他同字节流一样
完成文本文件的复制
只能复制纯文本
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TextFileCopy {
public static void main(String[] args) {
String sourceFile = "source.txt"; // 源文件路径
String destinationFile = "destination.txt"; // 目标文件路径
try (FileReader reader = new FileReader(sourceFile);
FileWriter writer = new FileWriter(destinationFile)) {
int character;
while ((character = reader.read()) != -1) {
writer.write(character);
}
System.out.println("文件复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}