假设我正在从本地字符串变量构建一个 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/