Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / создать файл / 5 сообщений из 5, страница 1 из 1
31.05.2016, 16:32
    #39247384
maersk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создать файл
Столкнулся с проблемой.
Подключаюсь к серверу для получения данных, текстовые и числовые данные получаю нормально, но как дело доходит до файлов идут проблемы:

Код: java
1.
2.
int col_Icon = myCursor.getColumnIndexOrThrow("Icon");
byte[] icon = myCursor.getBlob(col_Icon);    //тут ошибка - java.util.ArrayList cannot be cast to byte[]



не понял почему getBlob() возвращает ArrayList, попробовал поэкспериментировать:
Код: java
1.
String icon = myCursor.getString(col_Icon); //ошибок нет



В итоге в String сохраняются цифры в квадратных скобках через запятую,
примерно такие: icon = "[137.0, 67.0, 1.0, ........... 278.0, 58.0, 104.0]"


Подскажите:
- в чем может быть ошибка getBlob()?
- можно ли данные такого String icon преобразовать в файл?
...
Рейтинг: 0 / 0
31.05.2016, 16:41
    #39247404
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создать файл
maerskне понял почему getBlob() возвращает ArrayList, попробовал поэкспериментировать:
https://developer.android.com/reference/android/database/Cursor.html?hl=ru#getBlob(int)

Придется показать текст всего класса, потому что не должно быть такой ошибки. Может не те классы цепляются.

maerskможно ли данные такого String icon преобразовать в файл?
Можно, но зачем лишние движения?
...
Рейтинг: 0 / 0
31.05.2016, 16:50
    #39247414
maersk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создать файл
wadmanmaerskне понял почему getBlob() возвращает ArrayList, попробовал поэкспериментировать:
https://developer.android.com/reference/android/database/Cursor.html?hl=ru#getBlob(int)

Придется показать текст всего класса, потому что не должно быть такой ошибки. Может не те классы цепляются.

maerskможно ли данные такого String icon преобразовать в файл?
Можно, но зачем лишние движения?

icon = "[ 137.0 , 67.0, 1.0, ........... 251.0 , 58.0, 104.0]"
Я так предполагаю что ошибка из за того что цифры выходят за диапазон типа byte на Java, т.е. больше 127.
На С#: byte От 0 до 255 - и там таких проблем нет.

можете привести пример с преобразованием данной строки в файл?
...
Рейтинг: 0 / 0
31.05.2016, 17:21
    #39247447
maersk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создать файл
все разобрался (не идеальное решение, но работает) если кому интересно, сделал следующее:

Код: 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.
//get data
String  icon_s = aCursor.getString(col_Icon);
String [] icon_ss= icon_s.split(",");
ArrayList<Integer> list=new ArrayList<>();
for(int i=0; i<icon_ss.length; i++)
{
  list.add(Integer.valueOf(icon_ss[i].substring(0,icon_ss[i].length()-2).trim()) );
}
int [] icon = new int[list.size()];    //МАССИВ Int - содержимое файла
for(int i = 0; i < list.size(); i++) 
 {
  icon[i] = list.get(i);
 }
// save to file
try
{
 File fold = new File(folderPhoto);
 if (!fold.exists()) fold.mkdir();

 FileOutputStream file = new FileOutputStream(photoFile);
 for (int i = 0; i < icon.length; i++)
 {
  file.write(icon[i]);
  file.close();
 }
}
catch (Exception e)
{
}
...
Рейтинг: 0 / 0
02.06.2016, 09:34
    #39248666
Oleg Shishkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создать файл
Если честно - так никто не делает.
- тип byte в java знаковый, в c# - беззнаковый (я тоже на это попал) - очень много гемора с этим
- определитесь какого типа данные файлы будут хранить: бинарные или строковые. Для разного типа данных используются разные методы чтения/записи
- обязательно проверяйте все пути к файлам, т.е. используйте mkdirs
- обязательно проверяйте наличие файлов
- обязательно проверяйте и отрабатывайте ошибки прав на запись
- закрытие файлов и потоков со сбросом буферов обязательно в finally
и пр. по мелочи

за основу можно взять http://www.javapractices.com/topic/TopicAction.do?Id=245
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / создать файл / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]