Java中字符输入输出流

由于字节流不能很好地操作Unicode字符,例如一个汉字在文件中占用连个字节,如果使用字节流,读取不当会出现乱码现象

Reader:用于读取字符流的抽象类,其部分方法如下

 FileRead:是用于读取字符流,是Reader的子类,其构造方法如下

这里演示读取a.txt文件

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Main {
    public static void main(String[] args) {
        try {
            Reader r = new FileReader("C:\\Users\\Administrator\\Desktop\\a.txt");
            int n;
            char[] chars = new char[3];
            while ((n = r.read(chars)) != -1) {
                String s = new String(chars,0,n);
                System.out.println(s);
            }
            r.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

 Writer:用于写入字符流的抽象类,write方法将数据首先写入到缓冲区,每当缓冲区溢出时,缓冲区的内容将被自动写入到目的地,如果关闭流,缓冲区的内容会立即写入到目的地。流调用flush()方法可以里立即冲洗当前的缓冲区,即将缓冲区的内容写到目的地,其部分方法如下

 FileWriter:是用于写入字符流,是Writer的子类,其构造方法如下

这里演示读取a.txt文件并写入到b.txt文件

import java.io.*;

public class Main {
    public static void main(String[] args) {
        try {
            Reader r = new FileReader("C:\\Users\\Administrator\\Desktop\\a.txt");
            Writer w = new FileWriter("C:\\Users\\Administrator\\Desktop\\b.txt");
            int n;
            char[] chars = new char[3];
            while ((n = r.read(chars)) != -1) {
                w.write(chars,0,n);
            }
            r.close();
            w.flush();
            w.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

 

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页