Java字符流——高效处理文本数据

目录

前言

一、FileReader和FileWriter

1.FileReader

2.FileWriter

二、BufferedReader和BufferedWriter

1.BufferedReader

2.BufferedWriter


前言

字符流是用于处理字符数据的流,主要用于读取和写入文本文件。与字节流不同,字符流能够正确处理字符编码,确保在不同平台和语言环境下的兼容性。Java 提供了多种字符流类,这些类继承自 Reader 和 Writer 类。以下是一些常用的字符流类:

1. Reader:字符输入流的抽象类,所有字符输入流都继承自此类。

  • FileReader:用于从文件中读取字符流。它使用系统默认的字符编码来解码文件内容。
  • CharArrayReader:从字符数组中读取数据。
  • BufferedReader:为其他输入流提供缓冲功能,提高读取效率。
  • InputStreamReader:将字节流转换为字符流,允许指定字符编码。
  • StringReader:从字符串中读取字符。

2. Writer:字符输出流的抽象类,所有字符输出流都继承自此类。

  • FileWriter:用于将字符流写入文件。它使用系统默认的字符编码来编码输出内容。
  • CharArrayWriter:将数据写入字符数组。
  • BufferedWriter:为其他输出流提供缓冲功能,提高写入效率。
  • OutputStreamWriter:将字符流转换为字节流,允许指定字符编码。
  • PrintWriter:一个便捷的类,用于打印格式化的文本到字符流。
  • StringWriter:向字符串写入字符。

一、FileReader和FileWriter

1.FileReader

FileReader 是一个用于从文件中读取字符流的类。它使用系统默认的字符编码来解码文件内容。

构造方法

  • FileReader(String fileName):根据文件名创建一个 FileReader 对象。
  • FileReader(File file):根据 File 对象创建一个 FileReader 对象。

常用方法

  • int read():读取单个字符,并返回字符的整数值,如果到达文件末尾,则返回 -1。
  • int read(char[] cbuf):将字符读入数组中,并返回实际读取的字符数。
  • void close():关闭流并释放与之关联的系统资源。
public static void main(String[] args) {
        try (FileReader reader = new FileReader("fileName.txt")) {
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2.FileWriter

FileWriter 是一个用于向文件写入字符流的类。它使用系统默认的字符编码来编码输出内容。

构造方法

  • FileWriter(String fileName):根据文件名创建一个 FileWriter 对象。
  • FileWriter(File file):根据 File 对象创建一个 FileWriter 对象。
  • FileWriter(String fileName, boolean append):根据文件名创建一个 FileWriter 对象,并指定是否以追加模式写入文件。

常用方法

  • void write(int c):写入单个字符。
  • void write(char[] cbuf):写入字符数组。
  • void write(String str):写入字符串。
  • void close():关闭流并释放与之关联的系统资源。
 public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("fileName.txt")) {
            writer.write("Hello, World!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

二、BufferedReader和BufferedWriter

1.BufferedReader

BufferedReader 是一个用于读取字符数据的缓冲类,它通过减少实际I/O操作的次数来提高性能。

构造方法

  • BufferedReader(Reader in):创建一个使用默认缓冲区大小的新缓冲字符输入流。
  • BufferedReader(Reader in, int size):创建一个使用指定大小的缓冲区的新缓冲字符输入流。

常用方法

  • int read():读取单个字符。
  • int read(char[] cbuf):读取字符数组。
  • String readLine():读取一行文本。
  • void close():关闭流,并释放与之关联的所有资源。
 public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("fileName.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2.BufferedWriter

BufferedWriter 是一个用于将字符写入到字符输出流的缓冲类,它通过将多次调用写操作合并为较少的I/O操作来提高性能。

构造方法

  • BufferedWriter(Writer out):创建一个使用默认缓冲区大小(通常是8KB)的新缓冲字符输出流。
  • BufferedWriter(Writer out, int size):创建一个使用指定大小的缓冲区的新缓冲字符输出流。

常用方法

  • void write(int c):写入单个字符。
  • void write(char[] cbuf):写入字符数组。
  • void write(String str):写入字符串。
  • void write(String str, int off, int len):写入字符串的一部分。
  • void flush():清空缓冲区,但不关闭流。
  • void close():关闭流,并释放与之关联的所有资源。
 public static void main(String[] args) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("fileName.txt"))) {
            writer.write("Hello, World!");
            writer.newLine(); // 写入换行符
            writer.write("This is a test.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值