字符流

HeJin大约 2 分钟JavaIO流

当需要读取的数据是纯文本的形式时,使用字符流来操作会更加方便。

字符输入流

所有字符输入流的父类是java.io.Reader,是以字符为单位的输入流。

FileReader创建对象

public FileReader(String fileName) throws FileNotFoundException
    
public FileReader(File file) throws FileNotFoundException    

FileReader读取数据

  • 读取一个字符

    // 读取单个字符
    public int read() throws IOException
    

    使用:

    public static void main(String[] args) throws IOException {
        FileReader reader = new FileReader("io/src/main/java/com/a.txt");
    
        int ch;
        while ((ch = reader.read()) != -1){
            System.out.println((char) ch);
        }
    
        reader.close();
    }
    
  • 一次读取一个字符数组

    public int read(char cbuf[]) throws IOException
    

    使用:

    public static void main(String[] args) throws IOException {
        FileReader reader = new FileReader("io/src/main/java/com/a.txt");
    
        char[] chars = new char[10];
        int len;
        while ((len = reader.read(chars)) != -1){
            System.out.println(new String(chars, 0, len));
        }
    
        reader.close();
    }
    
    当需要读取的数据是纯
    文本的形式时,使用字
    符流来操作会更加方便
    。
    
    Process finished with exit code 0
    

字符输出流

所有字符输出流的父类是java.io.Writer,是以字符为单位的输出流。

FileWriter创建对象

public FileWriter(String fileName) throws IOException
    
public FileWriter(File file) throws IOException    

FileWriter写入文件

  • 一次写一个字符

    public void write(int c) throws IOException
    
    public void flush() throws IOException    
    

    使用:

    public static void main(String[] args) throws IOException {
        FileWriter writer = new FileWriter("io/src/main/java/com/aaa.txt");
    
        writer.write(97);
        writer.write('好');
        writer.write('c');
    
        // 写入的数据在缓冲区,flush或者close之后才会真正写入文件
        writer.flush();
    
        writer.close();
    }
    
  • 一次写一个字符数组

    public void write(char cbuf[]) throws IOException  
    

    使用:

    public static void main(String[] args) throws IOException {
        FileWriter writer = new FileWriter("io/src/main/java/com/aaa.txt");
    
        char[] chars = new char[]{'你', '好', 'a'};
        writer.write(chars);
    
        writer.flush();
    
        writer.close();
    }
    
  • 一次写入一个字符串

    public void write(String str) throws IOException  
    

    使用:

    public static void main(String[] args) throws IOException {
        FileWriter writer = new FileWriter("io/src/main/java/com/aaa.txt");
    
        writer.write("你好a");
        writer.write("你好a");
    
        writer.flush();
    
        writer.close();
    }
    

字符流实现纯文本文本复制

public static void main(String[] args) throws IOException {
    FileReader reader = new FileReader("io/src/main/java/com/a.txt");
    FileWriter writer = new FileWriter("io/src/main/java/com/bbb.txt");

    char[] chars = new char[10];
    int len;
    while ((len = reader.read(chars)) != -1){
        writer.write(chars, 0, len);
        // 刷新缓冲区数据到文件
        writer.flush();
    }

    reader.close();
    writer.close();
}