📅  最后修改于: 2023-12-03 14:42:50.479000             🧑  作者: Mango
在Java中,ObjectInputStream是用于从输入流中反序列化对象的类。它提供了一些方法来读取Java原始数据类型和对象,并将它们转换为虚拟机内部表示的形式。其中,close()方法是对象输入流用于释放与其相关联的资源的方法,本文将详细介绍该方法的使用。
下面是close()方法的详细语法:
public void close() throws IOException
close()方法没有参数。
close()方法没有返回值。
close()方法用于释放对象输入流相关的资源,包括流本身、底层输入流和数据流。调用该方法后将禁止从流读取任何数据,并且另外的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()方法可以帮助我们释放与对象输入流相关的资源,避免资源泄漏和内存浪费。