Skip to content

1. 输入输出概述

Java 提供了一套强大的输入输出(I/O)API,用于处理数据的读取和写入。JavaI/O 操作主要分为两类:字节流和字符流。

1.1 字节流与字符流

  • 字节流:用于处理原始二进制数据,适合所有类型的数据(如图片、音频等)。
  • 字符流:用于处理字符数据,适合文本文件的读取和写入。

2. 字节流

2.1 InputStream 和 OutputStream

  • InputStream:所有字节输入流的超类。
  • OutputStream:所有字节输出流的超类。

2.1.1 常用的字节流类

  • FileInputStream:从文件中读取字节。
  • FileOutputStream:向文件中写入字节。

2.2 示例代码

java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("input.txt");
             FileOutputStream fos = new FileOutputStream("output.txt")) {
            int data;
            while ((data = fis.read()) != -1) {
                fos.write(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 字符流

3.1 Reader 和 Writer

  • Reader:所有字符输入流的超类。
  • Writer:所有字符输出流的超类。

3.1.1 常用的字符流类

  • FileReader:从文件中读取字符。
  • FileWriter:向文件中写入字符。

3.2 示例代码

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

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

4. 缓冲流

缓冲流可以提高 I/O 操作的效率,常用的缓冲流类有:

  • BufferedInputStream
  • BufferedOutputStream
  • BufferedReader
  • BufferedWriter

4.1 示例代码

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

public class BufferedStreamExample {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("input.txt"));
             BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. 文件操作

5.1 文件类

Java 提供了 File 类用于文件的创建、删除、重命名等操作。

5.2 示例代码

java
import java.io.File;

public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        try {
            if (file.createNewFile()) {
                System.out.println("文件创建成功");
            } else {
                System.out.println("文件已存在");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

6. 控制台输入输出

java
import java.util.Scanner;

public class ConsoleInputExample {
    public static void main(String[] args) {
        // 创建 Scanner 对象
        Scanner scanner = new Scanner(System.in);

        // 提示用户输入
        System.out.print("请输入您的名字: ");
        String name = scanner.nextLine(); // 读取一行字符串

        System.out.print("请输入您的年龄: ");
        int age = scanner.nextInt(); // 读取整数

        // 输出结果
        System.out.println("你好, " + name + "! 你的年龄是 " + age + "岁。");

        // 关闭 Scanner
        scanner.close();
    }
}