暑期自学 Day 03 | File 类 和 IO 流(三)

字符流

  • 使用字节流读取中文时,会出现一些问题。由于中文在编码中占2~3个字节,一个个字节读取输出时会出现乱码问题。 – 引入字符流
  • 字符流的构造方法作用和字节流的一样,以下做个复习:
    • 创建一个字符流对象
    • 根据传递的文件路径,创建文件
    • 将字符流对象指向创建的文件对象
字符输入流(Reader)
  • 抽象类,Reader 是最顶层父类
  • 一些共性方法:
    • public int read();public int read(char[] cbuf) 读取单个或多个字符
    • pbulic void close()
  • 使用步骤
    • 创建 FileReader 对象,传递要读取的文件。
    • 调用 read() 方法,读取相应的内容
    • 释放资源
字符输出流 (Writer)
  • 抽象类,Writer 是最顶层父类

  • 一些共性方法:

    • public int write();public int write(char[] cbuf) 写入单个或多个字符
    • pbulic void close()
  • 使用步骤

    • 创建 FileWrite 对象,传递要读取的文件。
    • 调用 write() 方法,读取相应的内容
    • 释放资源
  • 代码示例

          FileWriter fw = new FileWriter("D:\\Programming\\demo02test.txt",true);
          // 写单个字符
          fw.write('你');
    
          // 写多个字符
          // 第一种写法 public void write(char[] c, int off, int len)
          String str = "我是鲍里斯";
          char[] chars = str.toCharArray();
          int len = chars.length;
          fw.write(chars,0,len);
    
          // 第二种写法 public void write(String, int off, int len)
          fw.write("\r\n"); // 换行
          fw.write("woshibaolisi",0,9);
          fw.close();
    • 注意: 如果 fw.close() 不写数据只是保存到缓冲区,不会保存到文件。这与 FileOutputStream 不同。
close() 和 flush() 方法的区别
  • flush:刷新缓冲区,流对象可以继续使用
  • close:刷新缓冲区,然后通知系统释放资源,流对象无法继续使用。
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!