Files.readAllBytes()方法在读取文件后是否会关闭输入流?

3

这个Java方法在读取文件后是否关闭了输入流?

Files.readAllBytes(Paths.get(“file”))


4
这个javadocs东西很不错 从文件中读取所有字节。该方法确保在读取完所有字节后关闭该文件 - Scary Wombat
1个回答

5

是的,它会关闭。在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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接