阅读量:0
在Java中,可以通过检查资源对象的状态来判断它是否已经关闭。但是,并非所有的资源类都提供了检查其状态的方法。例如,对于文件流(如FileInputStream
、FileOutputStream
、FileReader
和FileWriter
),当它们被关闭后,再次调用close()
方法会抛出IOException
。因此,你可以通过捕获这个异常来判断资源是否已经关闭。
下面是一个示例代码:
import java.io.*; public class CheckResourceClosed { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("test.txt"); // 读取文件内容 int data = fis.read(); while (data != -1) { System.out.print((char) data); data = fis.read(); } fis.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); System.out.println("\nFileInputStream is closed."); } catch (IOException e) { System.out.println("\nFileInputStream is already closed."); } } } } }
在这个示例中,我们首先打开一个名为test.txt
的文件,然后读取其内容。在finally
块中,我们尝试再次关闭FileInputStream
。如果关闭成功,说明之前它还没有被关闭;如果抛出IOException
,则说明它已经被关闭。
需要注意的是,这种方法并不适用于所有类型的资源。对于其他类型的资源,你可能需要查看它们的API文档,了解如何检查它们的状态。