Урок 75. Хранение данных. Работа с файлами.
Re: Урок 75. Хранение данных. Работа с файлами.
почему при записи на SD выбрасывает исключение ?
Тестировал на реальном устройстве android2.3.6
скажите как записывать на SD/считывать c SD, массивы чисел?
и как можно посмотреть список файлов в определенной директории?
Да и еще, в с++ я могу сохранять, данные (точнее работать с потоками) из классов, перегружая операторы << и >>. В java есть что то подобное?
Тестировал на реальном устройстве android2.3.6
скажите как записывать на SD/считывать c SD, массивы чисел?
и как можно посмотреть список файлов в определенной директории?
Да и еще, в с++ я могу сохранять, данные (точнее работать с потоками) из классов, перегружая операторы << и >>. В java есть что то подобное?
Re: Урок 75. Хранение данных. Работа с файлами.
Всем привет. У меня вопрос есть по хранению данных:
Я создаю плейлист. Создание плейлиста выглядит вот так (обрывок из кода):
Файл записывается в нужную папку, я вижу его через файловый менеджер. Но беда в том, что медиапроигрыватели не видят этот список воспроизведения.
Если открыть файл через файловый менеджер (File Commander: аля Total Commander для Android), то песни проигрываются через эту программу, а если попытаться "открыть с помощью" проигрывателя, то не открывается(если через файловый менеджер, сами проигрывателя просто не видят список).
Бывало так, что, при записи файла через дебаггер (Android Studio), проигрыватели видели файл и все проигрывалось. В общем, если проигрыватель видит файл, то он его проигрывает (например Play Music).
Что может быть не так? Могу дать больше информации, но не знаю какой
Так сложилось, что я сначала написал код, а потом прочитал этот урок, поэтому не знаю разницы в записи файлов через PrintWriter и BufferedWriter.
Программу тестил на Nexus 4 Android 4.3.
Заранее спасибо за совет, помощь.
Я создаю плейлист. Создание плейлиста выглядит вот так (обрывок из кода):
Код: Выделить всё
File file = new File(Environment.getExternalStorageDirectory() + "/Music","Test.m3u");
PrintWriter writer = new PrintWriter(file, "Unicode");
.....
writer.println(PathToSong.toString()+"\r");
....
writer.flush();
writer.close();
Если открыть файл через файловый менеджер (File Commander: аля Total Commander для Android), то песни проигрываются через эту программу, а если попытаться "открыть с помощью" проигрывателя, то не открывается(если через файловый менеджер, сами проигрывателя просто не видят список).
Бывало так, что, при записи файла через дебаггер (Android Studio), проигрыватели видели файл и все проигрывалось. В общем, если проигрыватель видит файл, то он его проигрывает (например Play Music).
Что может быть не так? Могу дать больше информации, но не знаю какой
Так сложилось, что я сначала написал код, а потом прочитал этот урок, поэтому не знаю разницы в записи файлов через PrintWriter и BufferedWriter.
Программу тестил на Nexus 4 Android 4.3.
Заранее спасибо за совет, помощь.
Re: Урок 75. Хранение данных. Работа с файлами.
Народ, кто знает как узнать дату создания файла. Не последней модификации (file.lastModified()).
Re: Урок 75. Хранение данных. Работа с файлами.
По поводу исключения. В манифесте стоит разрешение на запись?_ILYA_ писал(а):почему при записи на SD выбрасывает исключение ?
Тестировал на реальном устройстве android2.3.6
скажите как записывать на SD/считывать c SD, массивы чисел?
и как можно посмотреть список файлов в определенной директории?
Да и еще, в с++ я могу сохранять, данные (точнее работать с потоками) из классов, перегружая операторы << и >>. В java есть что то подобное?
Что бы посмотреть список файлов, нужно выполнить метод file.listFiles(), который вернет массив файлов.
Re: Урок 75. Хранение данных. Работа с файлами.
ссылкаSPAWN писал(а):Народ, кто знает как узнать дату создания файла. Не последней модификации (file.lastModified()).
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 75. Хранение данных. Работа с файлами.
А если у меня нет раздела /data/data/... ? Хотя функция getFilesDir() возвращает именно его... В результате файлы где-то создаются, но записывать содержимое не хотят. Или тут что-то еще?
Аппарат Samsung Tab 3 имеет похожий раздел /Android/data/..., но файлов там нет.
Спасибо.
Аппарат Samsung Tab 3 имеет похожий раздел /Android/data/..., но файлов там нет.
Спасибо.
Re: Урок 75. Хранение данных. Работа с файлами.
откуда вы знаете, что нет? на телефоне вы увидите эту папку, если он рутован, если хотите увидеть - запустите прогу н а эмуляторе
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 75. Хранение данных. Работа с файлами.
За рутованность - спасибо, но размеры все-таки нулевые - не пишутся файлы однако...Foenix писал(а):откуда вы знаете, что нет? на телефоне вы увидите эту папку, если он рутован, если хотите увидеть - запустите прогу н а эмуляторе
Re: Урок 75. Хранение данных. Работа с файлами.
ну дык это нужно отдельно разбираться. если отлаживаешь на телефоне - попробуй записать для начала файл в общедоступную папку (чтоб виден был 100%) и отлаживай код (либо тут выкладывай с логами), поставь вывод в лог того, что в файл записываешь - и проверишь.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 75. Хранение данных. Работа с файлами.
Извините, я уже перестаю понимать то, что, казалось, понимал.Foenix писал(а):ну дык это нужно отдельно разбираться. если отлаживаешь на телефоне - попробуй записать для начала файл в общедоступную папку (чтоб виден был 100%) и отлаживай код (либо тут выкладывай с логами), поставь вывод в лог того, что в файл записываешь - и проверишь.
Моя программа ДОЛЖНА записать бинарный файл. Система всегда предлагает его писать в предопределенное место. При попытке записи файл создается, а при попытке чтения сообщает, что размер файла нулевой.
В какую общедоступную папку я могу записать файл своей программой? И что логить, если в файл ничего не попало?
Re: Урок 75. Хранение данных. Работа с файлами.
Система предлагает? а ты предложи свой путь.
что значит ДОЛЖНа записать? ты же что-то туда передаешь? выводи это перед записью в лог.
В какую папку? в папку на флешке, например.
Откуда я знаю что у тебя туда должно попасть и "не попало"? может быть ты и передаешь там null какой-нибудь?
что значит ДОЛЖНа записать? ты же что-то туда передаешь? выводи это перед записью в лог.
В какую папку? в папку на флешке, например.
Откуда я знаю что у тебя туда должно попасть и "не попало"? может быть ты и передаешь там null какой-нибудь?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 75. Хранение данных. Работа с файлами.
для получения доступа к sd карте:
1) в манифесте: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2) в коде для получения пути: Environment.getExternalStorageDirectory().getPath() (вернет что-то типа /mnt/sdcard/, к этой папке уже есть доступ из filemanager'ов)
3) проверяете действительно ли программа что-то создаёт в данной папке
а "логить" хотя бы: myFile.exists()
1) в манифесте: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2) в коде для получения пути: Environment.getExternalStorageDirectory().getPath() (вернет что-то типа /mnt/sdcard/, к этой папке уже есть доступ из filemanager'ов)
3) проверяете действительно ли программа что-то создаёт в данной папке
а "логить" хотя бы: myFile.exists()
Re: Урок 75. Хранение данных. Работа с файлами.
да экзистс у него файл.. логить надо то, что туда передается
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 75. Хранение данных. Работа с файлами.
Да как предложить-то, если fileOutputStream требует простого имени, без пути.Foenix писал(а):Система предлагает? а ты предложи свой путь.
что значит ДОЛЖНа записать? ты же что-то туда передаешь? выводи это перед записью в лог.
В какую папку? в папку на флешке, например.
Откуда я знаю что у тебя туда должно попасть и "не попало"? может быть ты и передаешь там null какой-нибудь?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 75. Хранение данных. Работа с файлами.
Проверьте запись файла по шагам, через отладку.
Возможно, при попытке записи возникает исключение, и по всей вероятности вы заключили весь код в try catch c полным игнорированием всех исключений. В результате программа не вылетает, а код записи в файл не отрабатывает.
Возможно, при попытке записи возникает исключение, и по всей вероятности вы заключили весь код в try catch c полным игнорированием всех исключений. В результате программа не вылетает, а код записи в файл не отрабатывает.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 75. Хранение данных. Работа с файлами.
вы данный урок читали?Gary1210 писал(а):Да как предложить-то, если fileOutputStream требует простого имени, без пути.Foenix писал(а):Система предлагает? а ты предложи свой путь.
что значит ДОЛЖНа записать? ты же что-то туда передаешь? выводи это перед записью в лог.
В какую папку? в папку на флешке, например.
Откуда я знаю что у тебя туда должно попасть и "не попало"? может быть ты и передаешь там null какой-нибудь?
Код: Выделить всё
// отрываем поток для записи
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
openFileOutput(FILENAME, MODE_PRIVATE)));
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 75. Хранение данных. Работа с файлами.
Спасибо всем, кто принял участие.
File f = new File(fileName);
if(!f.exists() || f.length() == 0)
throw new FileNotFoundException(fileName);
Вот этот блок все портил. И false, и 0 одновременно.
А почему портил - не понимаю. Но это будет уже другая история.
Еще раз всем спасибо.
File f = new File(fileName);
if(!f.exists() || f.length() == 0)
throw new FileNotFoundException(fileName);
Вот этот блок все портил. И false, и 0 одновременно.
А почему портил - не понимаю. Но это будет уже другая история.
Еще раз всем спасибо.
Re: Урок 75. Хранение данных. Работа с файлами.
Помогите, кто может.
Что тут не так? Директория не создается
Это из манифеста:
<uses-permission
android:name="WRITE_EXTERNAL_STORAGE"
/>
А это из текста:
if(!Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED))
return;
File file = new File(
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "myFiles");
if(!file.exists())
{
if(!file.mkdir())
Log.d("MY_LOG", "false");
}
Что тут не так? Директория не создается
Это из манифеста:
<uses-permission
android:name="WRITE_EXTERNAL_STORAGE"
/>
А это из текста:
if(!Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED))
return;
File file = new File(
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "myFiles");
if(!file.exists())
{
if(!file.mkdir())
Log.d("MY_LOG", "false");
}
Re: Урок 75. Хранение данных. Работа с файлами.
Ни как не пойму, почему при чтении с SD возвращает пустую строку
вот код метода, для чтения с SD
вот код метода, для чтения с SD
Код: Выделить всё
// Считываниe с SD
public static String readFileSD(String file_name)
{
String result = null;
// Проверка доступности SD
if(!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))
{
Toast.makeText(context, "SD карта не доступна", Toast.LENGTH_LONG).show();
return "SD карта не доступна";
}
// Получаем путь к SD
File sd_path = Environment.getExternalStorageDirectory();
// добавляем свой каталог к пути
sd_path = new File(sd_path.getAbsolutePath() + "/" + DIR_SD);
// формируем объект File содержащий путь к файлу
File sd_file = new File(sd_path, file_name);
try
{
// Открываем поток для чтения
BufferedReader br = new BufferedReader(new FileReader(sd_file));
// читаем содержимоe
while((result = br.readLine()) != null){}
//Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
br.close();
return result;
}
catch(FileNotFoundException e)
{
result = file_name + " Not found";
e.printStackTrace();
}
catch(IOException e)
{
Toast.makeText(context, "IOException", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
return result;
}
Re: Урок 75. Хранение данных. Работа с файлами.
Понял в чем была причина возврата пустой строки. Пришлось не много изменить код
Еще ВОПРОС:
Есть приложение, которое на SD создает директорию и в процессе работы сохраняет туда файлы.
Пользователь пользовался этим приложением достаточно долго и оно создало много файлов. И в один прекрасный день, пользователь решил удалить приложение.
Удалил, но директория с файлами осталась . Так вот собственно вопрос -как сделать что бы при удалении приложения удалялось все что оно создало в процессе своей работы
Код: Выделить всё
// Открываем поток для чтения
BufferedReader br = new BufferedReader(new FileReader(sd_file));
// читаем содержимоe
String str;
while((str = br.readLine()) != null)
{
result = "" + str;
}
br.close();
return result;
Есть приложение, которое на SD создает директорию и в процессе работы сохраняет туда файлы.
Пользователь пользовался этим приложением достаточно долго и оно создало много файлов. И в один прекрасный день, пользователь решил удалить приложение.
Удалил, но директория с файлами осталась . Так вот собственно вопрос -как сделать что бы при удалении приложения удалялось все что оно создало в процессе своей работы