Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.74
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
#1

Запись файла - Android

29.05.2013, 14:37. Просмотров 3551. Ответов 7
Метки нет (Все метки)

пытаюсь сохранить картинку на диск но вот в этом месте:
Java
1
OutputStream out = openFileOutput(sdFile.getAbsolutePath(), 0);
происходит исключение, сл. содержания:
"java.lang.IllegalArgumentException: File /mnt/sdcard/ContactBackupData/284BCPhoto.png contains a path separator"
папка предварительно создана, пермишины на чтение и запись добавлены, этим методом в другом приложении все нормально сохраняется, а в чем тут проблемма непойму может кто подскажет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.05.2013, 14:48     Запись файла #2
This method opens a file in the private data area of the application. You cannot open any files in subdirectories in this area or from entirely other areas using this method. So use a FileInputStream or such.
...
Good-bad man
254 / 232 / 17
Регистрация: 31.10.2010
Сообщений: 504
29.05.2013, 15:21     Запись файла #3
Хранение данных. Работа с файлами.
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
29.05.2013, 15:55  [ТС]     Запись файла #4
ах вот оно что..... странно а как же оно в другом приложении работает.. код 1:1 похож... надо с этим разобраЦа....
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.05.2013, 15:58     Запись файла #5
видимо, в другом приложении используется просто "file_name" а не путь на файл на карте.
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
29.05.2013, 17:03  [ТС]     Запись файла #6
ну кажись разобрался... файлы записывает (нужно было действительно только имя файла передавать) но почемуто все файлы нулевого размера, хотя данные для записи dataToWrite точно есть (картинки 10-30 Кб) вот метод:
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
void writeFotoSD(byte[] dataToWrite,String conID)
    {
        // формируем объект File, который содержит путь к файлу
        String fn = conID+ FILENAME_PHOTO +".png";
        File sdFile = new File(sdPath, fn);
        try
        {           
            FileWriter fr = new FileWriter(sdFile);
 
            FileOutputStream fout = context.openFileOutput(fn, 0);
            // открываем поток для записи
            OutputStreamWriter sw = new OutputStreamWriter(fout);
            // пишем данные
            fout.write(dataToWrite);
            // закрываем поток
            fout.close();           
 
            Log.d("ЗАПИСЬ ФОТО", "Файл записан на SD: " + sdFile.getAbsolutePath());
        }
        catch (IOException e)
        {
            Log.e("ЗАПИСЬ ФАЙЛА", e.getMessage());
        }
        catch (Exception ex)
        {
            Log.e("ЗАПИСЬ ФАЙЛА", ex.getMessage());
        }
    }
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.05.2013, 17:09     Запись файла #7
Java
1
2
3
fout.write(dataToWrite);
fout.flush();
fout.close();

Цитата Сообщение от GiGaBiTe911 Посмотреть сообщение
Java
1
OutputStreamWriter sw = new OutputStreamWriter(fout);
а зачем вы создаете OutputStreamWriter который не используете?

Добавлено через 55 секунд
Цитата Сообщение от GiGaBiTe911 Посмотреть сообщение
Java
1
FileWriter fr = new FileWriter(sdFile);
и это тоже непонятно зачем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 17:12     Запись файла
Еще ссылки по теме:

Android Чтение и запись xml файла на SD-карту
Android Получить имя файла из диалога выбора файла
Получение хеша бинарного файла сборки для выполняемого apk-файла Android
Запись Файла Android
Запись звука unity Android

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

Или воспользуйтесь поиском по форуму:
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
29.05.2013, 17:12  [ТС]     Запись файла #8
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
2
3
fout.write(dataToWrite);
fout.flush();
fout.close();


а зачем вы создаете OutputStreamWriter который не используете?

Добавлено через 55 секунд

и это тоже непонятно зачем.
ой, пардонте, это случайно осталось от предыдущего кода (я же тут экспериментами занимаюсь, учусь знаете ) не судите строго )
Yandex
Объявления
29.05.2013, 17:12     Запись файла
Ответ Создать тему
Опции темы

Текущее время: 13:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru