Skip to content

Java IO 流操作

TIP

Java IO 流是处理输入输出操作的基础,分为字节流和字符流两大类。

IO 流分类

字节流                   字符流
├── InputStream          ├── Reader
│   ├── FileInputStream  │   ├── FileReader
│   └── BufferedInputStream  │   └── BufferedReader
├── OutputStream         └── Writer
│   ├── FileOutputStream     ├── FileWriter
│   └── BufferedOutputStream └── BufferedWriter

文件读取

字节流读取

java
try (FileInputStream fis = new FileInputStream("data.bin")) {
    int data;
    while ((data = fis.read()) != -1) {
        System.out.print((char) data);
    }
}

字符流读取(推荐处理文本)

java
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
}

文件写入

java
try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt", true))) {
    bw.write("Hello, World!");
    bw.newLine();
    bw.write("追加写入第二行");
}

复制文件

java
public static void copyFile(String src, String dest) throws IOException {
    try (FileInputStream in = new FileInputStream(src);
         FileOutputStream out = new FileOutputStream(dest)) {
        byte[] buffer = new byte[8192];
        int len;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
    }
}

TIP

  • 处理文本文件优先使用字符流(Reader/Writer)
  • 处理图片、视频等二进制文件使用字节流(InputStream/OutputStream)
  • 使用缓冲流(BufferedXxx)可大幅提升读写性能