Здравствуйте. Пишу клиент-сервер.
Есть несколько вопросов.
Какие Stream`ы лучше использовать для а) передачи текста; б) передачи изображения; в) передачи своего кастомного объекта(в котором может быть и файл и текст и дата, не важно)?
Читал, что BufferedInputStream/BufferedOutputStream работают быстрее остальных. Но для них нужно знать размер получаемого фйла, правильно понял? Просто, читая документацию, запутался в многообразии InputStream, FileInputStream, DataInputStream. Абсолютно не понимаю различий. А так же каким образом можно создать byte[] с данными полученными из BufferedOutputStream. Вот хотелось бы что бы разъяснили это. А еще лучше урок сделать по потокам этим)
Stream`мы и их различия
-
alex_gitarist
- Сообщения: 1
- Зарегистрирован: 09 окт 2012, 21:58
Re: Stream`мы и их различия
В интернете примеров много, в каждой книге про потоки написано. И тем более это не форум по Jave а по Android'y так что нету смысла писать статтью по потокам.
Касательно вопроса. Выбор потока зависит от нужды. Допустим если вы будете передавать файлы то нужно использовать FileInputStream так как он для чтения файлов, но что бы передать поток по сети то его всё равно придётся преобразовывать в InputStream. В общем каждый поток предназначен для своего (чтения файлов, строк и т.д.). На иерархии всех потоков стоит InputStream.
BufferedInputStream/BufferedOutputStream действительно быстрее работают, но они вроде как ускоряют чтения/запись файлового потока (опять таки смотря от вашей цели, файлы вам передавать или строки).
Ну ещё и от себя скажу что сейчас писать передачу данных потоками уже давно не модно, а в большинстве случаев геморно. Тем более если учесть что вы собрались писать под мобильные платформы, так как потоки считывают байты в ОЗУ, и если много байт читать то приложение будет падать. А так существует много фреймворков и либ. Я например предпочитаю protobuf, можно сервер на .Net написать а в приложении его использовать на любой платформе, и пишется в пару строчек, плюс он использует шифрование.
Касательно вопроса. Выбор потока зависит от нужды. Допустим если вы будете передавать файлы то нужно использовать FileInputStream так как он для чтения файлов, но что бы передать поток по сети то его всё равно придётся преобразовывать в InputStream. В общем каждый поток предназначен для своего (чтения файлов, строк и т.д.). На иерархии всех потоков стоит InputStream.
BufferedInputStream/BufferedOutputStream действительно быстрее работают, но они вроде как ускоряют чтения/запись файлового потока (опять таки смотря от вашей цели, файлы вам передавать или строки).
Ну ещё и от себя скажу что сейчас писать передачу данных потоками уже давно не модно, а в большинстве случаев геморно. Тем более если учесть что вы собрались писать под мобильные платформы, так как потоки считывают байты в ОЗУ, и если много байт читать то приложение будет падать. А так существует много фреймворков и либ. Я например предпочитаю protobuf, можно сервер на .Net написать а в приложении его использовать на любой платформе, и пишется в пару строчек, плюс он использует шифрование.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Stream`мы и их различия
Хорстманн второй том, там прочитать про файлы. Там хорошо изложено про это всё. тут они используются зачастую как обертки, которые навязываются друг на друга. Говорить о том что быстрее и что нет, не совсем корректно.
