1

背景

我需要获取以下文件并将其移动到我的应用程序内部存储中。

mnt/sdcard/下载

我可以通过使用以下方法复制文件,然后从 SD 卡中删除文件来成功实现这一点。

writer = new BufferedWriter(new FileWriter(file));
writer.write(data);
writer.close();

复制大文件时,我需要双倍的空间(我没有)。

问题

是否可以“移动”文件(更改目录)而不是复制删除

其他信息 调查我发现的问题:

public boolean renameTo (File newPath)

文档

两条路径都在同一个挂载点上。在 Android 上,应用程序在尝试在内部存储和 SD 卡之间进行复制时最有可能遇到此限制。 引用自这里

我不知道我是否可以在同一个挂载点上获得两条路径。

4

2 回答 2

2

听起来您正在处理非常大的文件,因此您可能会考虑某种渐进式缩小/增长另一种类型的操作 - 尽管大概只有当您可以检测到完整副本没有足够的空间时。

于 2012-11-27T16:58:27.240 回答
0

我之前尝试过相反的操作(SD 内部,同样的事情),复制然后删除过程是我发现唯一可以工作的过程。我想你不能只是“重命名”是有道理的,因为文件位于不同的物理存储区域(不确定这是否适用于某些 Android 设备上的某些“虚拟”SD 卡)。如果它们位于不同的存储空间,则不能只交换文件头上的指针。

于 2012-11-27T16:49:07.383 回答