暑期自学 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 协议》,转载必须注明作者和本文链接
推荐文章: