У меня есть класс CBZip2OutputStream из библиотеки apache bzi2, он может преобразовывать поток двоичных данных в поток данных bzi2. Но мне нужно архивировать строку. Поэтому, я думаю, я должен создать поток ввода из этого выходного потока, записать эти данные в выходной поток и прочитать архивные данные из входного потока ... но как связать выходной поток и входной поток?Java: OutputStream и InputStream
ответ
Во-первых, вы, вероятно, хотите DataOutputStream: он предназначен для приема примитивов и объектов и преобразования их в байты. Он также обрабатывает строки.
Далее следует использовать сквозной ввод-вывод: PipedInputStream и PipedOutputStream. Вы можете использовать их для связывания потоков вместе, аналогично подключению трубопроводов от одного процесса к другому из командной строки.
Вы можете просто прочитать поток ввода и записать в выходной поток. Это обычная практика. IOUtils.copy() (из jakarta commons) делает это, поэтому вам не нужно выполнять цикл.
В качестве альтернативы вы можете использовать PipedInputStream и PipedOutputStream.
Вы можете использовать несколько методов для получения InputStream из OutputStream.
- записать данные в буфер памяти (ByteArrayOutputStream), получить byteArray и прочитать его снова с помощью ByteArrayInputStream. Это лучший подход, если вы уверены, что ваши данные вписываются в память.
- скопируйте свои данные во временный файл и прочитайте его.
- использовать трубы: это лучший подход как к использованию памяти, так и к скорости (вы можете в полной мере использовать многоядерные процессоры), а также стандартное решение, предлагаемое Oracle.
- использовать «круговые буферы» или трубы через внешнюю библиотеку.
Адрес complete tutorial.
- 1. Java OutputStream и InputStream инициализации
- 2. Java Process и использование InputStream и OutputStream
- 3. Java: преобразовать InputStream в OutputStream
- 4. Обработка процессов Java Операции InputStream и OutputStream
- 5. Url InputStream и OutputStream объектов
- 6. Абстрактные методы InputStream и OutputStream
- 7. Подключение InputStream к OutputStream
- 8. connect OutputStream с InputStream
- 9. InputStream to OutputStream
- 10. Неблокирующая эхо Java InputStream в OutputStream
- 11. Подкласс как InputStream, так и OutputStream
- 12. Byte [] to InputStream или OutputStream
- 13. Как следует закрывать InputStream и OutputStream?
- 14. OutputStream и InputStream для между потоками связи
- 15. Чтение из InputStream и запись в OutputStream
- 16. Поиск/замена между InputStream и OutputStream
- 17. как разбить InputStream/OutPutStream в android
- 18. Почему NIO FileChannels, созданные из InputStream/OutputStream
- 19. Java OutputStream of Postgres экспортирует непосредственно в InputStream S3 upload
- 20. Модули Java Project - используйте InputStream/OutputStream или .tmpFile/byte []
- 21. Данные о каналах от InputStream до OutputStream в Java
- 22. разница между DataInputStream/DataOutputStream классом и InputStream/OutputStream Классом
- 23. Java IOException при попытке скопировать InputStream в OutputStream
- 24. Как отправить поток (InputStream/OutputStream) в helpl?
- 25. Is BufferedInputStream и BufferedOutputstream отличаются от InputStream и Outputstream
- 26. Лучший способ копирования InputStream в OutputStream
- 27. Странное поведение InputStream/OutputStream в гнезде
- 28. Java OutputStream Skip (offset)
- 29. Как конвертировать Reader в InputStream и Writer в OutputStream?
- 30. Контрольный сокет InputStream и OutputStream из Fragment (Android)