Stream`мы и их различия

Ответить
alex_gitarist
Сообщения: 1
Зарегистрирован: 09 окт 2012, 21:58

Stream`мы и их различия

Сообщение alex_gitarist » 10 окт 2012, 17:01

Здравствуйте. Пишу клиент-сервер.
Есть несколько вопросов.
Какие Stream`ы лучше использовать для а) передачи текста; б) передачи изображения; в) передачи своего кастомного объекта(в котором может быть и файл и текст и дата, не важно)?
Читал, что BufferedInputStream/BufferedOutputStream работают быстрее остальных. Но для них нужно знать размер получаемого фйла, правильно понял? Просто, читая документацию, запутался в многообразии InputStream, FileInputStream, DataInputStream. Абсолютно не понимаю различий. А так же каким образом можно создать byte[] с данными полученными из BufferedOutputStream. Вот хотелось бы что бы разъяснили это. А еще лучше урок сделать по потокам этим)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Stream`мы и их различия

Сообщение rezak90 » 10 окт 2012, 17:21

В интернете примеров много, в каждой книге про потоки написано. И тем более это не форум по Jave а по Android'y так что нету смысла писать статтью по потокам.
Касательно вопроса. Выбор потока зависит от нужды. Допустим если вы будете передавать файлы то нужно использовать FileInputStream так как он для чтения файлов, но что бы передать поток по сети то его всё равно придётся преобразовывать в InputStream. В общем каждый поток предназначен для своего (чтения файлов, строк и т.д.). На иерархии всех потоков стоит InputStream.
BufferedInputStream/BufferedOutputStream действительно быстрее работают, но они вроде как ускоряют чтения/запись файлового потока (опять таки смотря от вашей цели, файлы вам передавать или строки).
Ну ещё и от себя скажу что сейчас писать передачу данных потоками уже давно не модно, а в большинстве случаев геморно. Тем более если учесть что вы собрались писать под мобильные платформы, так как потоки считывают байты в ОЗУ, и если много байт читать то приложение будет падать. А так существует много фреймворков и либ. Я например предпочитаю protobuf, можно сервер на .Net написать а в приложении его использовать на любой платформе, и пишется в пару строчек, плюс он использует шифрование.
R.id.team
Политика на форуме запрещена

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Stream`мы и их различия

Сообщение Mikhail_dev » 10 окт 2012, 22:44

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

Ответить