Java输入输出流IO

Java I/O(输入/输出)是处理输入和输出的机制,用于读取和写入数据。Java 提供了丰富的 I/O 类库,支持文件操作、网络通信、对象序列化等。

1. 流(Streams)

Java I/O 主要通过流的概念进行操作。流是一个数据序列,从源传输到目的地。根据操作方向和数据类型的不同,流可以分为输入流(InputStream)、输出流(OutputStream)、读取器(Reader)和写入器(Writer)等。

1.1 输入流和输出流
  • 输入流(InputStream): 用于从源读取数据。
  • 输出流(OutputStream): 用于向目的地写入数据。
// 示例:使用 FileInputStream 读取文件内容并输出
try (InputStream input = new FileInputStream("example.txt")) {
    int data;
    while ((data = input.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 示例:使用 FileOutputStream 写入文件内容
try (OutputStream output = new FileOutputStream("output.txt")) {
    String data = "Hello, Java I/O!";
    output.write(data.getBytes());
} catch (IOException e) {
    e.printStackTrace();
1.2 读取器和写入器
  • 读取器(Reader): 用于读取字符数据。
  • 写入器(Writer): 用于写入字符数据。
// 示例:使用 FileReader 读取文件内容并输出
try (Reader reader = new FileReader("example.txt")) {
    int data;
    while ((data = reader.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 示例:使用 FileWriter 写入文件内容
try (Writer writer = new FileWriter("output.txt")) {
    String data = "Hello, Java I/O!";
    writer.write(data);
} catch (IOException e) {
    e.printStackTrace();
}

2. 文件操作

Java 提供了一系列用于文件操作的类,包括 FileFileInputStreamFileOutputStreamFileReaderFileWriter 等。

File file = new File("example.txt");
if (file.exists()) {
    System.out.println("File exists: " + file.getName());
} else {
    System.out.println("File not found");
}

// 创建文件夹
File directory = new File("newDirectory");
directory.mkdir();

3. 缓冲流(Buffered Streams)

缓冲流提供了缓冲区,可以提高读写效率。常见的缓冲流包括 BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter

try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
    String data = "Hello, Java I/O!";
    writer.write(data);
} catch (IOException e) {
    e.printStackTrace();
}

4. 对象序列化(Object Serialization)

对象序列化用于将对象转换为字节流,以便于在网络上传输或保存到文件中。主要使用 ObjectInputStreamObjectOutputStream

// 序列化对象
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser"))) {
    MyClass myObject = new MyClass();
    oos.writeObject(myObject);
} catch (IOException e) {
    e.printStackTrace();
}

// 反序列化对象
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser"))) {
    MyClass myObject = (MyClass) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}

以上是 Java I/O 的一些基本概念和实例。Java I/O 提供了丰富的工具和类库,能够满足不同场景下的输入输出需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值