📌  相关文章
📜  Java中的 ObjectInputStream close() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:50.479000             🧑  作者: Mango

Java中的 ObjectInputStream close() 方法及示例介绍

在Java中,ObjectInputStream是用于从输入流中反序列化对象的类。它提供了一些方法来读取Java原始数据类型和对象,并将它们转换为虚拟机内部表示的形式。其中,close()方法是对象输入流用于释放与其相关联的资源的方法,本文将详细介绍该方法的使用。

ObjectInputStream close()方法的语法

下面是close()方法的详细语法:

public void close() throws IOException
ObjectInputStream close()方法的参数

close()方法没有参数。

ObjectInputStream close()方法的返回值

close()方法没有返回值。

ObjectInputStream close()方法的功能

close()方法用于释放对象输入流相关的资源,包括流本身、底层输入流和数据流。调用该方法后将禁止从流读取任何数据,并且另外的close()调用将不会抛出任何异常。

ObjectInputStream close()方法的示例

下面是使用ObjectInputStream close()方法的示例:

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

public class ObjectInputStreamExample {

    public static void main(String[] args) {
        String fileName = "example.obj";

        try (FileInputStream fileIn = new FileInputStream(fileName);
             ObjectInputStream objIn = new ObjectInputStream(fileIn)) {
           
            // 读取对象
            Object obj = objIn.readObject();
            System.out.println("读取对象成功:");
            System.out.println(obj);

            // 关闭对象输入流
            objIn.close();
            System.out.println("对象输入流关闭成功。");

            // 读取对象数据流将抛出异常
            objIn.readObject();
        } catch (ClassNotFoundException e) {
            System.out.println("读取对象失败:找不到类。");
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println("读取对象失败:IO异常。");
            System.out.println(e.getMessage());
        }
    }
}

上面的代码演示了如何使用ObjectInputStream close()方法关闭对象输入流。在try-with-resources语句中创建了一个文件输入流和一个对象输入流,然后从流中读取一个对象并打印。接下来,调用close()方法关闭对象输入流并打印一条成功的消息。最后,再从对象输入流中读取一个对象,此时将抛出IOException。

输出结果为:

读取对象成功:
example object
对象输入流关闭成功。
读取对象失败:流已关闭。

可以看到,close()方法成功关闭了对象输入流。当尝试从流中读取对象时,因为流已经关闭了,所以抛出异常。

总结

本文介绍了Java中ObjectInputStream close()方法的语法、参数、返回值和功能,同时给出了一个使用示例。使用close()方法可以帮助我们释放与对象输入流相关的资源,避免资源泄漏和内存浪费。