Java IO(十四):FileReader 和 FileWriter

本文介绍了FileReader和FileWriter的基本用法,包括如何读取和写入文本文件,以及如何处理字符编码等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章节将简要介绍 FileReader 和 FileWriter。与 FileInputStream 和 FileOutputStream 类似,FileReader 与 FileWriter 用于处理文件内容。

 FileReader

FileReader 能够以字符流的形式读取文件内容。除了读取的单位不同之外(FileReader 读取字符,FileInputStream 读取字节),FileReader 与 FileInputStream 并无太大差异,也就是说,FileReader 用于读取文本。根据不同的编码方案,一个字符可能会相当于一个或者多个字符。

Reader reader = new FileReader("c:\\data.txt");
int data = reader.read();
while(data != -1){
    doSomethingWithData(data);
    data = reader.read();
}
reader.close();

FileReader 拥有其他可选的构造函数,能够让你使用不同的方式读取文件。
FileReader 会假设你想要使用的 JVM 的版本会的默认编码处理字节流,但是这通常不是你想要的。你可以手动设置编码方式。
如果你想明确指定一种编码方案,利用 InputStreamReader 配合 FileInputStream 代替 FileReader(FileReader 没有可以指定的编码构造函数)InputStreamReader 可以让你设置编码处理从底层文件中读取字节。

FileWriter

FileWriter 能够把把数据以字符流的形式写入文件。同样是处理文件,FileWriter 处理字符,FiliOutputStream 处理字节。根据不同的编码方案,一个字符可能相当于一个或者多个字节。

Writer writer = new FileWrter("c:\\data.txt");
While(moreData){
    String data = getMoreData();
    writer.wirte(data);
}
writer.close();

处理文件都会遇到一个问题是,当前写入的数据是覆盖源文件内同还是追加到末尾。当你创建一个 FileWriter 之后骂你可以通过使用不同的构造函数实现你的不同目的。

以下的构造函数取文件名为参数,会将新写入的内容将会覆盖该文件:

Writer wirter = new FileWriter("C:\\data.txt");

以下的构造函数取文件名和一个 Boolearn 变量作为参数,布尔值表明你是想追加哈市覆盖该文件。

Writer writer = new FileWriter("c:\\data.txt", true); // 追加到文件之后

Writer writer = new FileWriter("c:\\data.txt", flase) //覆盖该文件

同样的 FileWriter 不能指定编码,可以通过 OutputStreamWriter 配合 FileOutputStream 替代 FileWriter。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值