commons-io 的 FileUtils.readFileToByteArray 是否关闭了新创建的流?
Does commons-io's FileUtils.readFileToByteArray close the newly created stream?
我正在创建一个程序,为目录中的每个文件生成校验和。我正在使用 FileUtils.readFileToByteArray
内部创建一个新的 FileInputStream。问题是我没有找到关闭流的位置并且想知道可能的内存泄漏。
所以我想问一下:这个方法读取流后会关闭吗?
简短回答:是的,它会关闭流。
稍微长一点的答案:
我们看代码:
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);
}
你在这里看到的是 try
括号中打开的 try-with resource syntax. Any AutoClosable
(在本例中,FileInputStream
)将在 try
时隐式关闭块终止,无论它是正常终止还是通过return
ing、抛出异常等终止
我正在创建一个程序,为目录中的每个文件生成校验和。我正在使用 FileUtils.readFileToByteArray
内部创建一个新的 FileInputStream。问题是我没有找到关闭流的位置并且想知道可能的内存泄漏。
所以我想问一下:这个方法读取流后会关闭吗?
简短回答:是的,它会关闭流。
稍微长一点的答案: 我们看代码:
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);
}
你在这里看到的是 try
括号中打开的 try-with resource syntax. Any AutoClosable
(在本例中,FileInputStream
)将在 try
时隐式关闭块终止,无论它是正常终止还是通过return
ing、抛出异常等终止