简体   繁体   中英

Does commons-io's FileUtils.readFileToByteArray close the newly created stream?

I'm creating a program that produce checksums for each files in directory. I'm using FileUtils.readFileToByteArray which internally creates a new FileInputStream. The problem is I didn't find where the stream is closed and wondering about a possible memory leak.

So I'm asking: does this method close the stream after reading it?

Short answer: yes, it closes the stream.

Slightly longer answer: Let's look at the code:

try (InputStream in = openInputStream(file)) {
    final long fileLength = file.length();
    // file.length() may return 0 for system-dependent entities, treat 0 as unknown length - see IO-453
    return fileLength > 0 ? IOUtils.toByteArray(in, fileLength) : IOUtils.toByteArray(in);
}

That you see here is the try-with resource syntax. Any AutoClosable opened in the try 's parentheses (in this case, a FileInputStream ) will be implicitly closed when the try block terminates, whether it terminated normally or by return ing, throwing an exception, etc.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM