перемещение файлов по Froyo - PullRequest
1 голос
/ 08 июля 2011

в моем приложении я создаю временный файл таким образом

File tmp = File.createTempFile("TEST_", null, getFilesDir());

это разрешается в файле, который toURI () zed соответствует чему-то вроде

/data/data/it.lorenzoff.test/files/TEST_XXX.tmp

В определенных обстоятельствах я хотел бы переместить этот файл навсегда на SDCard, но этот код

dest = new File("/sdcard/permanentFile");
tmp.renameTo(dest);

никогда не работает.

Я уже использую эти разрешения

<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

но переименуйте, чтобы продолжить возвращать false.Что я делаю не так?

Заранее спасибо

Л.

1 Ответ

4 голосов
/ 08 июля 2011

Объяснение можно найти в документации для File:

Возможны многие сбои.Некоторые из наиболее вероятных сбоев включают:

  • Требуется разрешение на запись в каталоги, содержащие как исходный, так и целевой путь.
  • Разрешение на поиск требуется для всех родителей обоих путей.
  • Оба пути [должны] находиться в одной точке монтирования.В Android приложения чаще всего сталкиваются с этим ограничением при попытке копирования между внутренним хранилищем и SD-картой.

В этом случае пути к исходному и целевому файлам указывают на разное монтированиеточки (эти две точки монтирования даже имеют разную файловую систему).Единственный вариант - вручную скопировать файл на SDCard, а затем удалить файл из внутреннего хранилища.

...