这个Java方法在读取文件后是否关闭了输入流?
Files.readAllBytes(Paths.get(“file”))
这个Java方法在读取文件后是否关闭了输入流?
Files.readAllBytes(Paths.get(“file”))
是的,它会关闭。在javadoc中可以看到。
从文件中读取所有字节。当所有字节已被读取或抛出I/O错误或其他运行时异常时,该方法确保文件已关闭。
请注意,此方法适用于简单情况,在这些情况下将所有字节读入字节数组很方便。它不适用于读取大型文件。
public static byte[] readAllBytes(Path path) throws IOException {
try (SeekableByteChannel sbc = Files.newByteChannel(path);
InputStream in = Channels.newInputStream(sbc)) {
long size = sbc.size();
if (size > (long)MAX_BUFFER_SIZE)
throw new OutOfMemoryError("Required array size too large");
return read(in, (int)size);
}
}