Java中的I/O流(输入/输出)

在Java中,I/O(输入/输出)流是用于处理数据输入和输出的核心API之一。Java的I/O API主要位于java.io包中,并且它提供了一系列类来读取和写入基本类型的数据,如字节和字符。

基础概念

  • InputStream 和 OutputStream 是用来处理字节流的抽象基类。
  • Reader 和 Writer 是用来处理字符流的抽象基类。
  • 所有具体的I/O类都是从这些基类派生出来的。

字节流

  • InputStream:用于读取原始字节。
  • OutputStream:用于写入原始字节。
常见的子类
  • FileInputStream/FileOutputStream:用于文件的读写。
  • ByteArrayInputStream/ByteArrayOutputStream:用于在内存中创建一个字节数组的输入/输出流。
  • BufferedInputStream/BufferedOutputStream:为提高效率,提供缓冲功能。
  • DataInputStream/DataOutputStream:可以读写基本数据类型,例如int, float等。
  • ObjectInputStream/ObjectOutputStream:用于对象的序列化与反序列化。

字符流

  • Reader:用于读取字符。
  • Writer:用于写入字符。
常见的子类
  • FileReader/FileWriter:用于文件的字符读写。
  • StringReader/StringWriter:用于读写字符串。
  • BufferedReader/BufferedWriter:提供缓冲功能以提高效率。
  • PrintWriter:用于格式化输出。

使用示例

下面是一个简单的例子,展示如何使用FileInputStream和FileOutputStream进行文件复制。

 
1import java.io.FileInputStream;
2import java.io.FileOutputStream;
3import java.io.IOException;
4
5public class FileCopyExample {
6    public static void main(String[] args) {
7        FileInputStream in = null;
8        FileOutputStream out = null;
9        try {
10            // 打开输入流
11            in = new FileInputStream("source.txt");
12            // 打开输出流
13            out = new FileOutputStream("destination.txt");
14
15            byte[] buffer = new byte[1024];
16            int length;
17
18            // 读取并写入数据
19            while ((length = in.read(buffer)) > 0) {
20                out.write(buffer, 0, length);
21            }
22        } catch (IOException e) {
23            e.printStackTrace();
24        } finally {
25            try {
26                if (in != null) in.close();
27                if (out != null) out.close();
28            } catch (IOException e) {
29                e.printStackTrace();
30            }
31        }
32    }
33}

注意事项

  • 在使用I/O流时,通常需要捕获IOException
  • 在操作完成后,记得关闭流以释放资源。
  • Java 7引入了try-with-resources语句,可以自动关闭实现AutoCloseable接口的资源。
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值