Страница 1 из 1
Как выбрать путь к файлу программно?
Добавлено: 11 апр 2014, 13:33
denmusic1992
Всем доброго времени суток! Интересует такой вопрос:
Есть программа, работающая с файлами, заведомо известно расположение папки с файлами.
Можно ли программно изменить путь к файлу? имеется в виду не просто вывести окно, в котором надо набрать путь полностью через /, а по-иному (например, через uri)
И, кстати, этот путь надо желательно сохранять, чтобы при следующем включении программы этот путь уже был задан.
Re: Как выбрать путь к файлу программно?
Добавлено: 14 апр 2014, 11:41
altwin
[syntax=java5]
String youFilePath = Environment.getExternalStorageDirectory().toString()+"/test.txt"
[/syntax]
http://developer.android.com/intl/ru/re ... /File.html
Re: Как выбрать путь к файлу программно?
Добавлено: 15 апр 2014, 10:43
denmusic1992
Вы меня неправильно поняли. Мне нужно вывести диалоговое окно на экране, чтобы пользователь сам задавал путь..
Я знаю, что можно дать пользователю ввести путь через слэшы и т.д., но было бы удобнее сделать это как нибудь через выбор папок..
Re: Как выбрать путь к файлу программно?
Добавлено: 15 апр 2014, 11:40
altwin
Ок, для примера по тому же принципу, диалог с выбором файла пользователем:
[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)в папке и читаете имена, выводите их, пользователь выбирает... проверяете права и возможность записи/чтения, выполняете действие(пишите/читаете/выводите ошибку) и т.д. все делается стандартными методами работы с файлами описанный по ссылке в моем первом ответе.
Re: Как выбрать путь к файлу программно?
Добавлено: 15 апр 2014, 11:53
klblk
опоздал, но все равно оставлю тут=)
стандартного файл манагера нет в андройде, но ничего не мешает написать свой.
1) Получаем путь к папке какой-нить начальной
2) Делаем из него новый File
3) Получаем список файлов (mFile.listFiles()), если нужны только папки, то пропускаем через фильтр (mFile.listFiles(new FileFilter(){...})
4) Скармливаем список Адаптеру и строим ListView (не забываем про ".." для перехода назад)
5) Приделываем OnItemClickListener к данному ListView в котором обрабатываем нажатия: при клике на папке получаем новый список файлов и обновляем адаптер.
Re: Как выбрать путь к файлу программно?
Добавлено: 15 апр 2014, 15:17
denmusic1992
Спасибо за ответы, я в принципе разобрался!

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