gpt4 book ai didi

java - 是否需要关闭由本地 String 变量的字节构建的 Java ByteArrayInputStream?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:39 29 4
gpt4 key购买 nike

假设我正在从本地字符串变量构建一个 Java ByteArrayInputStream。例如,假设我有一个名为 csv 的大字符串,表示 CSV 文件的内容,我需要将它放入输入流中,以便让我的程序的一个组件从该字符串中读取,而不是来自文件。例如,

InputStream inputStream = new ByteArrayInputStream(csv.​getBytes(StandardCharsets.UTF_8));

在我完成处理后是否需要关闭此 inputStream?我知道通常通过 try-resources 构造关闭未使用的输入流通常是一种很好的做法。我现在特别感兴趣的是如果在方法返回时此变量超出范围之前选择不关闭此输入流会产生什么后果。会不会有内存泄漏,因为我离开了一个流打开?还是因为流是在局部变量而不是文件资源上打开的,所以这无关紧要?

最佳答案

没有。您不需要关闭 ByteArrayInputStream。因为它在内存中,所以不会有任何后果(它将被垃圾收集)。现在,如果 InputStream 与外部资源(如 File)相关联,这可能会导致您用完文件句柄。

ByteArrayInputStream Javadoc说(部分),

Closing a ByteArrayOutputStream has no effect.

关于java - 是否需要关闭由本地 String 变量的字节构建的 Java ByteArrayInputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177775/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com