Java文本流

简介

在Java中,文本流是一种用于处理字符数据的输入输出机制。它提供了一种方便的方式来读取和写入文本文件、控制台输入和输出等。文本流以字符为单位进行操作,而不是以字节为单位。这使得它们更适合处理文本数据,因为字符是文本的基本单位。

Java的文本流库包含了一些重要的类,如Reader和Writer。Reader类用于读取字符数据,而Writer类用于写入字符数据。这两个类都是抽象类,具体的实现类有FileReader、FileWriter、BufferedReader和BufferedWriter等。

文本输入流

文本输入流用于从外部数据源(如文件)中读取字符数据。它提供了多种方法来读取字符,包括逐个字符读取、按行读取等。下面是一个使用BufferedReader逐行读取文件的示例代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TextInputStreamExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码首先创建了一个BufferedReader对象,它负责读取文件input.txt的内容。然后使用readLine()方法逐行读取文件,直到文件末尾。每次读取的一行文本会被打印到控制台上。

文本输出流

文本输出流用于将字符数据写入外部目标(如文件)。它提供了多种方法来写入字符,包括逐个字符写入、按行写入等。下面是一个使用BufferedWriter按行写入文件的示例代码:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class TextOutputStreamExample {
    public static void main(String[] args) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
            writer.write("Hello, World!");
            writer.newLine();
            writer.write("This is a text file.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码首先创建了一个BufferedWriter对象,它负责将字符数据写入文件output.txt。然后使用write()方法写入字符串,并使用newLine()方法换行。最后,使用close()方法关闭流。

其他常用操作

除了基本的读取和写入操作,文本流还支持其他一些常用操作,比如跳过指定数量的字符、在指定位置插入字符等。下面是一个使用FileReader和FileWriter来复制文件的示例代码:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileCopyExample {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("input.txt");
             FileWriter writer = new FileWriter("output.txt")) {
            int c;
            while ((c = reader.read()) != -1) {
                writer.write(c);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码使用FileReader和FileWriter来读取和写入文件。read()方法返回的是字符的ASCII码,write()方法接受的也是字符的ASCII码。通过读取和写入字符的ASCII码,实现了文件的复制功能。

总结

文本流是Java中处理字符数据的重要机制。它提供了一种方便的方式来读取和写入文本文件、控制台输入和输出等。文本输入流和输出流分别用于从外部数据源中读取字符数据和将字符数据写入外部目标。除了基本的读取和写入操作,文本流还支持其他一些常用操作。熟练掌握文本流的使用可以使得我们更高效地处理字符数据。

旅行图

journey
    title Java文本流之旅

    section 了解文本流
        ReadFile --> WriteFile: 基础操作
        ReadFile --> CopyFile: 复制文件
        WriteFile --> OtherOperations: 其他操作
    section 结束旅程
        CopyFile --> End