Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
1

PrintWriter и OutputStream

02.05.2016, 13:31. Показов 648. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужно передать на TCP сервер изображение и контакты телефона андроид. Изображение отлично передается таким кодом
Java
1
 outputStream.write(mybytearray1, 0, mybytearray1.length);
, где outputStream инициализированный объект OutputStream соответственно.
А контакты телефона читает из базы контактов смартфона и успешно передает такой код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Cursor c = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                    null, null, null);
            PrintWriter out = new PrintWriter(new BufferedWriter(
                    new OutputStreamWriter(socket.getOutputStream(), Charset.forName("UTF-8"))),
                    true);
            //ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
            //out.println(STX);
 
 
 
            if (c.moveToFirst()) {
                //while (c.moveToNext())
                for (int i = 0; i < c.getCount(); i++)
                {
                    
                    String contactName = c
                            .getString(c
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
 
                    Log.d("Func", contactName);
                    String phNumber = c
                            .getString(c
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    Log.d("Func", phNumber);
                    
 
                    
                    
                            out.flush();
                    
                            out.println(STX);
                            out.println(contactName);
                            out.println(phNumber);
                            out.println(ETX);
                    c.moveToNext();
                
                }
            }
Вот у меня и вопрос как можно и контакты телефона и байты изображения передать при помощи только одного класса PrintWriter или OutputStream? Просто размер изображения можно определить(он равен размеру файла в котором изображение хранится), а вот размер списка контактов определить сложно и выделить заблаговременно в массиве память для него, так контактов заранее неизвестно сколько может быть у пользователя. Это станет лишь ясно после прочтения всех контактов в ArrayList, например(тогда размер этого ArrayList и будет равен размеру списка контактов пользователя). Но проблема в том что если все запихивать в ArrayList и отправлять на сервер через writeObject(), так как сам TCP сервер написан на Qt то там нет методов десериализации объектов Java. Вот и вопрос как тогда отправить на сервер изображение и контакты одним каким то буфером и при помощи одного класса?? Подскажите пожалуйста наиболее оптимальный вариант?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2016, 13:31
Ответы с готовыми решениями:

OutputStream.write
Добрый вечер Уважаемые форумчане! Скажите пожалуйста почему функция Send, а точнее передача через...

Быстродействие InputStream и OutputStream
Доброй ночи. Для работы с внешним устройством использую связь через WiFi TCP (сервер на ESP8266). ...

Блокирует ли обращение к Socket InputStream и OutputStream программу?
Помогите как они работают. Допустим: клиент - void fun(){ writeUTF(&quot;data_1&quot;);//шлем...

PrintWriter
Текст, напечатанный PrintWriter'ом появляется в текстовом файлы только после выполнения...

2
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.05.2016, 13:34 2
Цитата Сообщение от yura91 Посмотреть сообщение
TCP сервер
что такое TCP сервер?
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
02.05.2016, 14:05  [ТС] 3
Ну программа которая предоставляет свои ресурсы TCP клиентам а к чему вы это спросили?

Добавлено через 45 секунд
Я просто спросил как удобнее одним классом отправить данные вот

Добавлено через 1 минуту
А у меня задействовано 2 outputStream и PrintWriter, а я хочу оптимальнее отправить все одним классом так как это сделать?
0
02.05.2016, 14:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2016, 14:05
Помогаю со студенческими работами здесь

PrintWriter
Почему-то записывает текст в файл в одну строку. В консоль выводит нормально вместе с переходами на...

Потоки InputStream/OutputStream
Привет. Помогите разобраться с стримами. Вся абстакция классов и работа их методов как бы...

PrintWriter.flush();
Использую PrintWriter pw = new PrintWriter(System.out, true); вывожу при помощи pw.write(); и...

Странности при закрытии OutputStream
На основе com.sun.net.httpsserver написана заглушка в целях тестирования некоего промежуточного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru