Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
172

Простой способ записи содержимого InputStream в OutputStream на Java

Часто в программировании на Java возникает необходимость перенаправить данные из одного потока ввода-вывода в другой. Например, когда нужно считать

Часто в программировании на Java возникает необходимость перенаправить данные из одного потока ввода-вывода в другой. Например, когда нужно считать файл из одного источника и записать его в другой. Простейший способ сделать это — использовать буферизованный поток ввода-вывода и цикл. Вот пример такого кода:

byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
while (len != -1) {
    outputStream.write(buffer, 0, len);
    len = inputStream.read(buffer);
}

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

Впрочем, этот метод не является единственно возможным, и в Java есть более удобные способы сделать это. Используя классы библиотеки Apache Commons IO, можно значительно упростить эту задачу и сделать код более понятным.

Вот как выглядит аналогичный код с использованием класса IOUtils из библиотеки Apache Commons IO:

IOUtils.copy(inputStream, outputStream);

Как видите, весь код сводится к одной строке. Метод copy класса IOUtils автоматически создает буфер, читает данные из потока ввода и записывает их в поток вывода. Это делает код более читаемым и упрощает его понимание.

Как видите, в Java есть различные способы записи содержимого из одного потока ввода-вывода в другой. Но наиболее предпочтительным является использование вспомогательных классов библиотеки Apache Commons IO, которые делают код короче и более понятным.

Добавить комментарий

Подарок
Забрать подарок