如果流是使用Java中的某个String或字节数组对象组成的,InputSream是否需要关闭



我有一小段代码。我正在使用字节数组创建一个InputStream,并将一些数据放到服务器上。

public void putStreamGetBytes() {
        try {
            String key = getKey();
            byte[] data = getTestData(getPayloadSize());
            InputStream stream = new ByteArrayInputStream(data);
            putStream(assetNWK, key, stream, true, RESPONSE_OK, VERSION_1_1, null, true);
            validateBytes(assetNWK, key, data, RESPONSE_OK, VERSION_1_1, null, true);
        } catch (Exception e) {
            handleError(e);
        }
    }

我还没有打开任何资源,比如文件之类的。我需要关闭流以避免内存泄漏吗?

有时您无法从流中获得预期的输出。所以有时候流会阻塞。为了避免这些阻塞,你需要先flush()流,然后close()流。

Here you are not using file or socket so memory leak would not happen but it's good practice to close stream after use.

避免内存泄漏。你需要把小溪放掉。要释放流,您需要在final块中调用close方法。

您唯一要分配的是InputStream本身。特别是在IOExceptions的情况下,根据您对代码的使用情况,这可能会有问题,如果可能的话,我建议使用try-with-resources语法,比如:

try(InputStream stream = new ByteArrayInputStream(data)){
......
}

相关内容

  • 没有找到相关文章

最新更新