Как выбрать путь к файлу программно?

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
denmusic1992
Сообщения: 8
Зарегистрирован: 06 окт 2013, 20:30

Как выбрать путь к файлу программно?

Сообщение denmusic1992 » 11 апр 2014, 13:33

Всем доброго времени суток! Интересует такой вопрос:
Есть программа, работающая с файлами, заведомо известно расположение папки с файлами.
Можно ли программно изменить путь к файлу? имеется в виду не просто вывести окно, в котором надо набрать путь полностью через /, а по-иному (например, через uri)
И, кстати, этот путь надо желательно сохранять, чтобы при следующем включении программы этот путь уже был задан.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как выбрать путь к файлу программно?

Сообщение altwin » 14 апр 2014, 11:41

[syntax=java5]
String youFilePath = Environment.getExternalStorageDirectory().toString()+"/test.txt"
[/syntax]
http://developer.android.com/intl/ru/re ... /File.html
Изображение

denmusic1992
Сообщения: 8
Зарегистрирован: 06 окт 2013, 20:30

Re: Как выбрать путь к файлу программно?

Сообщение denmusic1992 » 15 апр 2014, 10:43

altwin писал(а):[syntax=java5]
String youFilePath = Environment.getExternalStorageDirectory().toString()+"/test.txt"
[/syntax]
http://developer.android.com/intl/ru/re ... /File.html
Вы меня неправильно поняли. Мне нужно вывести диалоговое окно на экране, чтобы пользователь сам задавал путь..
Я знаю, что можно дать пользователю ввести путь через слэшы и т.д., но было бы удобнее сделать это как нибудь через выбор папок..

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как выбрать путь к файлу программно?

Сообщение altwin » 15 апр 2014, 11:40

Ок, для примера по тому же принципу, диалог с выбором файла пользователем:
[syntax=java5]//In an Activity
private String[] mFileList;
private File mPath = new File(Enviroment.getExternalStorageDirectory() + "//yourdir//");
private String mChosenFile;
private static final String FTYPE = ".txt";
private static final int DIALOG_LOAD_FILE = 1000;

private void loadFileList() {
try {
mPath.mkdirs();
}
catch(SecurityException e) {
Log.e(TAG, "unable to write on the sd card " + e.toString());
}
if(mPath.exists()) {
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String filename) {
File sel = new File(dir, filename);
return filename.contains(FTYPE) || sel.isDirectory();
}
};
mFileList = mPath.list(filter);
}
else {
mFileList= new String[0];
}
}

protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
AlertDialog.Builder builder = new Builder(this);

switch(id) {
case DIALOG_LOAD_FILE:
builder.setTitle("Choose your file");
if(mFileList == null) {
Log.e(TAG, "Showing file picker before loading the file list");
dialog = builder.create();
return dialog;
}
builder.setItems(mFileList, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mChosenFile = mFileList[which];
//you can do stuff with the file here too
}
});
break;
}
dialog = builder.show();
return dialog;
}[/syntax]
и т.д. Собственно в первой ссылке был ответ, вы делаете ls (у вас в винде, если вы не делали батники, это кажется называется dir)в папке и читаете имена, выводите их, пользователь выбирает... проверяете права и возможность записи/чтения, выполняете действие(пишите/читаете/выводите ошибку) и т.д. все делается стандартными методами работы с файлами описанный по ссылке в моем первом ответе.
Изображение

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как выбрать путь к файлу программно?

Сообщение klblk » 15 апр 2014, 11:53

опоздал, но все равно оставлю тут=)

стандартного файл манагера нет в андройде, но ничего не мешает написать свой.
1) Получаем путь к папке какой-нить начальной
2) Делаем из него новый File
3) Получаем список файлов (mFile.listFiles()), если нужны только папки, то пропускаем через фильтр (mFile.listFiles(new FileFilter(){...})
4) Скармливаем список Адаптеру и строим ListView (не забываем про ".." для перехода назад)
5) Приделываем OnItemClickListener к данному ListView в котором обрабатываем нажатия: при клике на папке получаем новый список файлов и обновляем адаптер.

denmusic1992
Сообщения: 8
Зарегистрирован: 06 окт 2013, 20:30

Re: Как выбрать путь к файлу программно?

Сообщение denmusic1992 » 15 апр 2014, 15:17

Спасибо за ответы, я в принципе разобрался! :) Сижу сейчас, тестирую написанное.

Если кому нужно, мне помогли следующие ссылки
http://code.google.com/p/android-file-dialog/
http://stackoverflow.com/questions/3592 ... ile-dialog

Ответить