File、IO流(三)

本文详细介绍了Java中的FileReader和FileWriter字符流,包括它们的作用、构造器和方法,以及如何高效地进行字符读写操作。特别强调了字符输出流使用时必须刷新或关闭流以确保数据生效。同时讨论了字节流和字符流在不同场景的应用。

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

IO流 - 字符流

文件字符输入流 - 读字符数据进来

FileReader(文件字符输入流)

  • 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去。
构造器说明
public FileReader(File file)创建字符输入流管道与源文件连通
public FileReader(String pathname)创建字符输入流管道与源文件连通
方法名称说明
public int read()每次读取一个字符返回,如果发现没有数据可读会返回-1
public int read(char [ ] buffer)

每次用一个字符数组去读取数据,返回字符数组读取了多少个字符

如果发现没有数据可读会返回-1

public class Test {
    public static void main(String[] args) throws Exception {

        try (
                // 创建一个文件字符输入流管道与源文件连通
                Reader fr = new FileReader("C:\\Users\\hasee\\IdeaProjects\\test\\src\\com\\test\\test")
        ) {
            // 读取文本文件的内容
//            int c; //记住每次读取的字符编号
//            while ((c = fr.read()) != -1){
//                System.out.print((char) c);
//            }
            // 每次读取一个字符的形式,性能肯定是比较差的

            // 每次读取多个字符
            char[] buffer = new char[3];
            int len; //记住每次读取了多少字符
            while ((len = fr.read(buffer)) != -1){
                // 读取多少倒出多少
                System.out.print(new String(buffer,0,len));
            }
            // 性能是比较不错的
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

文件字符输出流 - 写字符数据出去

FileWriter(文件字符输出流)

  • 作用:以内存为基准,把内存中的数据以字符的形式写出到文件中去。
构造器说明
public FileWriter(File file)创建字符输出流管道与源文件连通
public FileWriter(String filepath)创建字符输出流管道与源文件连通
public FileWriter(File file,boolean append)创建字符输出流管道与源文件连通,可追加数据
public FileWriter(String filepath,boolean append)创建字符输出流管道与源文件连通,可追加数据
方法名称说明
void write(int c)写一个字符
void write(String str)写一个字符串
void write(String str,int off,int len)写一个字符串的一部分
void write(char[ ] cbuf)写一个字符数组
void write(char[ ],int off,int len)写入字符数组的一部分
import java.io.FileWriter;
import java.io.Writer;

public class Test {
    public static void main(String[] args) throws Exception {
        try (
                // 创建一个文件字符输出流管道与目标文件连通
                // 覆盖管道
                //Writer fw = new FileWriter("src/com/test/test");
                // 追加管道
                Writer fw = new FileWriter("src/com/test/test", true)
        ) {
            // 写一个字符出去
            fw.write('a');
            fw.write(97);
            fw.write('我');
            fw.write("\r\n");

            // 写一个字符串出去
            fw.write("我爱中国abc");
            fw.write("\r\n");

            // 写字符串的一部分出去
            fw.write("我爱中国abc",0,4);
            fw.write("\r\n");

            // 写一个字符数组出去
            char[] buffer = {'闪','电','a','b','c'};
            fw.write(buffer);
            fw.write("\r\n");

            // 写字符数组的一部分出去
            fw.write(buffer,0,2);
            fw.write("\r\n");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

字符输出流使用时的注意事项

字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效

方法名称说明
public void flush()throw IOException刷新流,就是将内存中缓存的数据立即写道文件中去生效
public void close()throw IOException关闭流的操作,包含了刷新

字节流、字符流的使用场景:

  • 字节流适合做一切文件数据的拷贝(音视频,文本);字节流不适合读取中文内容输出
  • 字符流适合做文本的操作(读,写)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值