Работа с файлами на Android

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
gera
Сообщения: 9
Зарегистрирован: 11 окт 2012, 23:30

Re: Работа с файлами на Android

Сообщение gera » 24 ноя 2012, 18:14

Если мы удаляем используя Runtime, то почему мы не хотим так же использовать его для copy и move, типа чтобы повыделываться пописать лишний код? :)

а вообще вот что пишет developer.android.com:
You should always delete files that you no longer need. The most straightforward way to delete a file is to have the opened file reference call delete() on itself.

Код: Выделить всё

myFile.delete();

yura_taldenko
Сообщения: 2
Зарегистрирован: 05 янв 2013, 15:00

Re: Работа с файлами на Android

Сообщение yura_taldenko » 05 янв 2013, 18:42

Может кто подскажет?
Есть ли в Android стандартный диалог выбора файла? Такой же, как в Windows. Или надо самому с нуля создавать?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Работа с файлами на Android

Сообщение rezak90 » 05 янв 2013, 19:23

yura_taldenko писал(а):Может кто подскажет?
Есть ли в Android стандартный диалог выбора файла? Такой же, как в Windows. Или надо самому с нуля создавать?
http://stackoverflow.com/questions/3592 ... ile-dialog
http://www.ulduzsoft.com/2012/07/androi ... ertdialog/
http://code.google.com/p/android-file-dialog/
последний лучше всего наверное
R.id.team
Политика на форуме запрещена

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Работа с файлами на Android

Сообщение KamiSempai » 05 янв 2013, 20:48

Не проще ли Intent использовать?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Работа с файлами на Android

Сообщение rezak90 » 05 янв 2013, 21:03

конечно проще, но если хочется чего то своего =)
R.id.team
Политика на форуме запрещена

yura_taldenko
Сообщения: 2
Зарегистрирован: 05 янв 2013, 15:00

Re: Работа с файлами на Android

Сообщение yura_taldenko » 06 янв 2013, 22:53

"Не проще ли Intent использовать?"
нельзя ли поподробнее?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Работа с файлами на Android

Сообщение rezak90 » 06 янв 2013, 23:29

yura_taldenko писал(а):"Не проще ли Intent использовать?"
нельзя ли поподробнее?
http://stackoverflow.com/questions/7856 ... le-chooser
R.id.team
Политика на форуме запрещена

SPAWN
Сообщения: 20
Зарегистрирован: 11 мар 2013, 21:59

Re: Работа с файлами на Android

Сообщение SPAWN » 11 мар 2013, 22:05

Подскажите, пожалуйста, как создать папку во внутренней памяти

Nyashka
Сообщения: 40
Зарегистрирован: 19 мар 2013, 13:06

Re: Работа с файлами на Android

Сообщение Nyashka » 25 июл 2013, 10:45

На Sd карте(а не в ресурсах приложения) находится xml файл. Как мне подключив его в программе как File преобразовать в xml который я смогу парсить?

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Работа с файлами на Android

Сообщение Finch » 26 июл 2013, 14:46

гугл религия не позволяет использовать?
Создаешь File, путь к нему через Environment.getExternalStorageDirectory() + путь к файлу, дальше проверяем если файл существует, читаем его FileReader_ом и загоняем в BufferedReader. Дальше читаем построчно BufferedReader_ом + перенос "\n" и аппэндим в StringBuilder. Закрываем BufferedReader и вызываем у StringBuilder_а метод toString(). Вот у нас есть String который можно парсить =)
CEO of a company R.id.team

buy
Сообщения: 5
Зарегистрирован: 03 авг 2013, 20:18

Re: Работа с файлами на Android

Сообщение buy » 02 окт 2013, 01:19

rezak90 писал(а):

Код: Выделить всё

File dir = new File("sdcard\\mydir\\");
for(File file : dir.listFiles()) {
if(file.isFile())
//работаем с файлом и т.д.
}
А почему в первой строке двойной слэш и в неправильную сторону, почему не

Код: Выделить всё

File dir = new File("/mnt/sdcard/mydir/etc");

coolmarat
Сообщения: 6
Зарегистрирован: 20 ноя 2013, 11:31

Re: Работа с файлами на Android

Сообщение coolmarat » 20 ноя 2013, 12:51

Ребята, я очень начинающий. Подскажите, как я могу вместе с приложением распространять файлы и при необходимости обращаться к ним? Я думаю, надо как-то в ресурсы запихать при разработке. А как потом при выполнении к ним обратиться?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Работа с файлами на Android

Сообщение rezak90 » 20 ноя 2013, 14:50

coolmarat писал(а):Ребята, я очень начинающий. Подскажите, как я могу вместе с приложением распространять файлы и при необходимости обращаться к ним? Я думаю, надо как-то в ресурсы запихать при разработке. А как потом при выполнении к ним обратиться?
http://developer.alexanderklimov.ru/and ... assets.php
R.id.team
Политика на форуме запрещена

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Работа с файлами на Android

Сообщение trew » 26 ноя 2013, 21:15

String sdState = android.os.Environment.getExternalStorageState(); //Получаем состояние SD карты (подключена она или нет) - возвращается true и false соответственно
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) // если true
File sdDir = android.os.Environment.getExternalStorageDirectory();
Этот код у меня возвращает всегда true (подробности ниже).
/mnt/sdcard

String sdState = android.os.Environment.getExternalStorageState();
всегда возвращает: mounted

Для моего устройства: android 4.0, Prology Latitude T-720T

Код: Выделить всё

File sdDir = android.os.Environment.getExternalStorageDirectory();
когда microSD не вставлена, возвращается путь: /mnt/sdcard
когда microSD вставлена : /mnt/sdcard (это внутренняя память устройства)
Т.е. никак не показывает путь к внешней карте: /mnt/extsd

Вопрос: каким образом получить путь к внешней карте, с учётом того, что на разных устройствах он разный?

Код: Выделить всё

/emmc
/mnt/sdcard/external_sd
/mnt/external_sd
/sdcard/sd
/mnt/sdcard/bpemmctest
/mnt/sdcard/_ExternalSD
/mnt/sdcard-ext
/mnt/Removable/MicroSD
/Removable/MicroSD
/mnt/external1
/mnt/extSdCard
/mnt/extsd
/mnt/usb_storage <-- usb flash mount
/mnt/extSdCard <-- usb flash mount
/mnt/UsbDriveA <-- usb flash mount
/mnt/UsbDriveB <-- usb flash mount
Чтение документации не прояснило ситуацию.

Если в уроке 75 поменять путь
[syntax=java]// получаем путь к SD
File sdPath = new File("/mnt/extsd");
//Environment.getExternalStorageDirectory();[/syntax]
файл будет записан на внешнюю карту.

Нужно получить путь: /mnt/extsd ---- не прописывая его в коде.
Или это новое поколение устройств, где пути прописываются руками, к внешней sd-карте?

в файле манифеста прописаны права:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
Последний раз редактировалось trew 26 ноя 2013, 21:49, всего редактировалось 1 раз.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Работа с файлами на Android

Сообщение Foenix » 26 ноя 2013, 21:47

getExternalStorageDirectory нужно использовать
Так и не поняла - в чем собственно проблема? Нет карты - пишется во внутреннюю память, есть - во внешнюю.. Да, немного странновато, но только и всего. Имхо нигде этот пусть хранить не нужно, а каждый раз пользоваться функцией. И каждый раз, при использовании этого хранилища, проверять - есть ли там файл (какой нужно) т.к. карту могут не только вытащить, стереть инфу на ней и так далее. Это уже нюансы использования карты.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Работа с файлами на Android

Сообщение trew » 26 ноя 2013, 21:52

Foenix писал(а):Так и не поняла - в чем собственно проблема? Нет карты - пишется во внутреннюю память, есть - во внешнюю..
Всегда пишется на внутреннюю память: /mnt/sdcard
В этом проблема.

Я уже писал, и поэтому напишу ещё раз :) getExternalStorageDirectory всегда возвращает /mnt/sdcard
подключена карта или не подключена.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Работа с файлами на Android

Сообщение Foenix » 26 ноя 2013, 22:52

Я тоже хочу повториться. Если карточка есть, то файл записывается на нее.
Вот кусок кода, т.к. ссылки уже давно никто не понимает.

Код: Выделить всё

sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            baseDir = android.os.Environment.getExternalStorageDirectory();
            directory = new File(baseDir, NAMESPACE);
            if (!directory.exists())
                directory.mkdirs();
        } else {
        	//тут другую выбираем
        }
	  
ПИШЕТСЯ НА КАРТУ!!!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Работа с файлами на Android

Сообщение trew » 27 ноя 2013, 13:51

Foenix писал(а):ПИШЕТСЯ НА КАРТУ!!!
Покажите пожалуйста лог для случаев: карта подключена и карта отсутствует, этой строки:
baseDir = android.os.Environment.getExternalStorageDirectory();

у меня всегда возвращает: /mnt/sdcard

в файле манифеста прописаны права:
[syntax=xml]<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">[/syntax]

Уже не знаю, что подумать. Может такая прошивка от производителя?
На устройстве нет root прав. Я его не ломал.

У пользователя IgNa тоже не получилось.
Может мы делаем что-то не так. Где ошибка в наших действиях?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Работа с файлами на Android

Сообщение rezak90 » 27 ноя 2013, 14:01

path /mnt/sdcard may be even if you have not sdcard
Последний раз редактировалось rezak90 27 ноя 2013, 14:58, всего редактировалось 1 раз.
R.id.team
Политика на форуме запрещена

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Работа с файлами на Android

Сообщение trew » 27 ноя 2013, 14:08

rezak90 писал(а):path /mnt/sdcard may be even if you have noе sdcard
Не понял, что такое noe?

Как получить путь /mnt/extsd ?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Ответить