目录

  1. Java IO 概述
  2. Java 流(Stream)概述
  3. Java 文件(File)操作
  4. Java 字节流(InputStream 和 OutputStream)
  5. Java 字符流(Reader 和 Writer)
  6. 缓冲流(BufferedStream)
  7. 对象流(ObjectStream)
  8. NIO(New IO)
  9. 参考资料
  10. 出站链接

1. Java IO 概述

Java 的 IO(输入/输出)系统用于处理数据的输入和输出操作,涉及文件、网络、内存等。Java 提供了 传统 IO(java.io 包)NIO(java.nio 包) 两种 IO 机制。


2. Java 流(Stream)概述

流(Stream) 是 IO 操作的核心概念,它表示数据的流动方向:

  • 输入流(InputStream/Reader):从外部数据源读取数据到 Java 程序。
  • 输出流(OutputStream/Writer):从 Java 程序写入数据到外部目标。

流的分类:

类型方向字节/字符主要类
字节输入流读取字节InputStream, FileInputStream
字节输出流写入字节OutputStream, FileOutputStream
字符输入流读取字符Reader, FileReader
字符输出流写入字符Writer, FileWriter

3. Java 文件(File)操作

创建文件

import java.io.File;
import java.io.IOException;

public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");

        try {
            if (file.createNewFile()) {
                System.out.println("文件创建成功: " + file.getAbsolutePath());
            } else {
                System.out.println("文件已存在。");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

删除文件

File file = new File("example.txt");
if (file.delete()) {
    System.out.println("文件删除成功");
} else {
    System.out.println("文件删除失败");
}

获取文件信息

File file = new File("example.txt");
System.out.println("文件路径: " + file.getAbsolutePath());
System.out.println("是否可读: " + file.canRead());
System.out.println("是否可写: " + file.canWrite());
System.out.println("文件大小: " + file.length() + " 字节");


4. Java 字节流(InputStream 和 OutputStream)

文件输入流(FileInputStream)

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

public class FileInputExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.txt")) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

文件输出流(FileOutputStream)

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

public class FileOutputExample {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("example.txt")) {
            String text = "Hello, Java IO!";
            fos.write(text.getBytes());
            System.out.println("数据写入成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


5. Java 字符流(Reader 和 Writer)

文件读取(FileReader)

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

public class FileReaderExample {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("example.txt")) {
            int data;
            while ((data = reader.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

文件写入(FileWriter)

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

public class FileWriterExample {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("example.txt")) {
            writer.write("Hello, FileWriter!");
            System.out.println("数据写入完成");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


6. 缓冲流(BufferedStream)

import java.io.*;

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


7. 对象流(ObjectStream)

import java.io.*;

class Person implements Serializable {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class ObjectStreamExample {
    public static void main(String[] args) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat"))) {
            oos.writeObject(new Person("Alice", 25));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


8. NIO(New IO)

import java.nio.file.*;

public class NIOExample {
    public static void main(String[] args) throws Exception {
        Path path = Paths.get("example.txt");
        Files.write(path, "Hello, NIO!".getBytes());
        System.out.println(new String(Files.readAllBytes(path)));
    }
}


9. 参考资料


10. 出站链接