在Froyo上移动文件

时间:2011-07-08 11:21:35

标签: android file move sd-card android-2.2-froyo

在我的应用程序中,我以这种方式创建一个临时文件

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

这解析为一个文件,toURI() zed 对象

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

在某些情况下,我想在SD卡上永久移动此文件,但此代码

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。 我做错了什么?

提前致谢

L,

1 个答案:

答案 0 :(得分:4)

可以在File的文档中找到解释:

很多失败都是可能的。一些更可能的失败包括:

  • 包含源路径和目标路径的目录需要写入权限。
  • 两条路径的所有父母都需要搜索权限。
  • 两条路径[必须]位于同一个挂载点上。在Android上,尝试在内部存储和SD卡之间复制时,应用程序最有可能达到此限制。

在这种情况下,源文件路径和目标文件路径指向不同的安装点(这两个安装点甚至具有不同的文件系统)。您只能选择手动将文件复制到SD卡,然后从内部存储中删除该文件。