Будет ли он более эффективным с помощью обертки, такой как BufferedInputStream для inputStream?
Не имеет никакого значения.IOUtils.toByteArray
считывает данные в буфер размером 4096 байт.BufferedInputStream
по умолчанию использует 8192-байтовый буфер.Использование BufferedInputStream
делает меньше операций ввода-вывода, но вам нужен очень быстрый источник данных, чтобы заметить любую разницу.
Если вы читаете InputStream по одному байту за раз (или несколько байтов), то действительно используете BufferedInputStreamповышает производительность, поскольку уменьшает количество вызовов операционной системы в 8000 раз. И сравнительно много вызовов операционной системы занимает много времени.
Сохраняет ли это память?
Нет.IOUtils.toByteArray
создаст new byte[4096]
независимо от того, передан ли буферизованный или небуферизованный InputStream.A BufferdedInputStream
стоит немного больше памяти для создания.Но ничего существенного.