Записать файл в подкаталог в Android - PullRequest
0 голосов
/ 31 марта 2010

Я пытаюсь сохранить файл в подкаталоге в Android 1.5. Я могу успешно создать каталог, используя

_context.GetFileStreamPath("foo").mkdir();

(_ context - это действие, с которого я начинаю выполнение сохранения файла), но затем, если я пытаюсь создать файл в foo /,

_context.GetFileStreamPath("foo/bar.txt");

Я получаю исключение, в котором не может быть разделителя каталогов в имени файла ("/").

Мне не хватает какой-то работы с файлами в Android ... Я думал, что смогу использовать стандартные классы Java, но они, похоже, не работают ... Я искал документацию по Android, но не смог привести хороший пример, и Google мне тоже не помог ...

Я задаю не тот вопрос (в гугл) ...

Можете ли вы помочь мне с этим?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 31 марта 2010

Я понял, чего мне не хватало. Классы Java File работают просто отлично, вам просто нужно передать абсолютный путь, по которому вы действительно можете писать файлы.

Чтобы получить этот «корневой» каталог, я использовал _context.getFilesDir (). Это даст вам рут вашего приложения. С этим я могу создать файл с new File(root + "myFileName") или, как сказал Шон Оуэн new File(rootDirectory, "myFileName").

3 голосов
/ 11 мая 2012

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

ПРИМЕЧАНИЕ. Этот код создает каталоги, вам может не понадобиться ...

File file = context.getFilesDir();
file.mkdir();

String[] array = filePath.split("/");
for (int t = 0; t < array.length - 1; t++) {
    file = new File(file, array[t]);
    file.mkdir();
}

File f = new File(file, array[array.length - 1]);

RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f, append);
2 голосов
/ 31 марта 2010

Используйте getDir(), чтобы получить указатель на каталог "foo" как объект File и создать из него что-то вроде new File(fooDir, "bar.txt").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...