Files.readAllBytes () закрывает входной поток после чтения файла? - PullRequest
0 голосов
/ 24 октября 2019

Закрывает ли этот метод Java входной поток после чтения файла?

Files.readAllBytes (Paths.get ("file"))

1 Ответ

3 голосов
/ 24 октября 2019

Да, закрывается. Смотрите это в javadoc .

Считывает все байты из файла. Этот метод гарантирует, что файл будет закрыт, когда прочитаны все байты или будет выдана ошибка ввода-вывода или другое исключение во время выполнения.

Обратите внимание, что этот метод предназначен для простых случаев, когда удобно считывать все байты в байтовый массив. Он не предназначен для чтения в больших файлах.

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);
    }
}
...