五、文件字符流FileReader&FileWriter

一、前提

文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现“乱码”现象。所以,我们处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作。

二、FileReader

与FileInputStream类似,只需将名字换掉即可

 1 import java.io.*;
 2 
 3 public class TestIO05 {
 4     public static void main(String[] args) {
 5         //创建流
 6         File file = new File("b.txt");
 7         //选择流
 8         Reader reader = null;
 9         try {
10             reader = new FileReader(file);
11             //操作流(分段读取),提高读取效率
12             char[] flush = new char[1024];
13             int len = -1;  //接收长度
14             while ((len = reader.read(flush)) != -1){
15                 //解码操作,字符数组-->字符串
16                 String str = new String(flush,0,len);
17                 System.out.println(str);
18             }
19         } catch (IOException e) {
20             e.printStackTrace();
21         }finally {
22             //关闭流
23             if(reader!=null){
24                 try {
25                     reader.close();
26                 } catch (IOException e) {
27                     e.printStackTrace();
28                 }
29             }
30         }
31     }
32 }

 二、FileWriter

 1 import java.io.*;
 2 
 3 public class TestIO06 {
 4     public static void main(String[] args) {
 5         //创建源
 6         File src = new File("abc.txt");
 7         //选择流
 8         Writer writer = null;
 9         try {
10             writer = new FileWriter(src);
11             //操作流(写出)
12             //写法一
13             /*String msg = "IO is so esay\r\n哈哈哈";
14             char[] datas = msg.toCharArray();  //字符串-->字符数组(编码)
15             writer.write(datas,0,datas.length);*/
16 
17             //写法二(实际上字符串就是字符数组,不需要处理它,直接丢进去就行)
18             /*String msg = "IO is so esay\r\n哈哈哈";
19             writer.write(msg);*/
20 
21             //写法三(append方法,更加简单)
22             writer.append("IO is so esay\r\n").append("哈哈哈");
23             writer.flush();   //刷新此输出流并强制任何缓冲的输出字节被写出,细节
24         } catch (FileNotFoundException ex) {
25             ex.printStackTrace();
26         } catch (IOException e) {
27             e.printStackTrace();
28         } finally {
29             //释放资源
30             if(writer!=null){
31                 try {
32                     writer.close();
33                 } catch (IOException e) {
34                     e.printStackTrace();
35                 }
36             }
37         }
38     }
39 
40 }

猜你喜欢

转载自www.cnblogs.com/qiaoxin11/p/12588651.html
今日推荐