欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中字符输入输出流

程序员文章站 2024-03-23 22:10:28
...

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

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

java中字符输入输出流

java中字符输入输出流

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

java中字符输入输出流

这里演示读取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()方法可以里立即冲洗当前的缓冲区,即将缓冲区的内容写到目的地,其部分方法如下

java中字符输入输出流

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

java中字符输入输出流

这里演示读取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();
        }

    }
}