Часто в программировании на 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, которые делают код короче и более понятным.
Добавить комментарий