字符流

  • 字符编码

    • ISO-8859-1:收录了除ASCII外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号
    • UTF-8:针对Unicode码表的可变长度字符编码
    • GB2312:简体中文
    • GBK:简体中文、扩充
    • BIG5:台湾,繁体中文
  • 字符流的父类(抽象类):

    • Reader:字符输入流
      • public int read(){}
      • public int read(char[] c){}
      • public int read(char[] b, int off, int len){}
    • Writer:字符输出流
      • public void write(int n){}
      • public void write(String str){}
      • public void write(char[] c){}
  • 文件字符流

    • FileReader:文件字符输入流

      • public int read(char[] c) //从流中读取多个字符,将读到内容存入c数组,返回实际读到的字符数;如果达到文件的尾部,则返回-1
      //创建FileReader文件字符输入流
      FileReader fr = new FileReader("D:\\hello.txt"); //抛出异常
      
      //读取
      //单个字符读取
      int data = 0;
      while((data = fr.read()) != -1){
          System.out.println((char) data);
      }
      //多个字符读取
      char[] buf = new char[1024];
      int count = 0;
      while((count = fr.read(buf)) != -1){
          System.out.println(new String(buf,0,count));
      }
      
      //关闭
      fr.close();
      
    • FileWriter:文件字符输出流

      • public void write(String str) //一次写多个字符,将b数组中所有字符,写入输出流
      //创建FileWriter文件字符输出流
      FileWriter fw = new FileWriter("D:\\write.txt"); //抛出异常
      
      //写入
      for(int i = 0; i < 10; i++){
          fw.write("你好,世界!\r\n"); // \r\n换行
          fw.flush();
      }
      
      //关闭
      fw.close();
      
    • 复制文件(只能复制文本文件,不能复制图片或者二进制文件)

      //创建FileReader、FileWriter
      FileReader fr = new FileReader("D:\\writer.txt"); //抛出异常
      FileWriter fw = new FileWriter("D:\\writer2.txt");
      
      //读写
      int data = 0;
      while((data = fr.read()) != -1){
          fw.write(data);
          fw.flush();
      }
      
      //关闭
      fw.close();
      fr.close();
      
  • 字符缓存流

    • 缓冲流:BufferReader/BufferWriter
      • 高效读写
      • 支持输入换行符
      • 可一次写一行、读一行

    例1:BufferReader的使用

    //创建BufferReader缓冲流
    FileReader fr = new FileReader("D:\\writer.txt"); //抛出异常
    BufferReader br = new BufferReader(fr);
    
    //读取
    //一次读多个字符
    char[] buf = new char[1024];
    int count = 0;
    while((count = br.read(buf)) != -1){
        System.out.println(new String(buf,0,count));
    }
    //一次读一行
    String line = null;
    while((line = br.readLine()) != null){
        System.out.println(line);
    }
    
    //关闭
    br.close();
    

    例2:BufferWriter的使用

    //创建BufferWriter缓冲流
    FileWriter fw = new FileWriter("D:\\abc.txt"); //抛出异常
    BufferWriter bw = new BufferWriter(fw);
    
    //写入
    for(int i = 0; i < 10; i++){
        bw.write("好好学习");
        bw.newLine(); //写入一个换行符(windows:\r\n linux:\n)
        bw.flush();
    }
    
    //关闭
    bw.close();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Remote_Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值