在 Android 中最快的移动目录的方式是什么?在大多数情况下,源和目标位于同一个 sdcard 文件系统中,但并非所有情况都是如此。
目前,我的代码遍历整个目录结构,并将每个文件的内容复制到新位置具有相同名称的新文件中。然后它验证文件大小是否匹配,最后删除源文件。
对于每个文件,我当前运行以下操作(附加异常处理):
try{
source = new FileInputStream(fileFrom).getChannel();
destination = new FileOutputStream(fileTo).getChannel();
destination.transferFrom(source, 0, source.size());
} finally {
source.close();
destination.close();
}
这似乎很慢,而且在我期望可能是一个简单的原始文件系统级别的即时“节点修改”方面需要太多的计算工作。
fileFrom
和fileTo
不在同一文件系统中,则renameTo
仅能重命名{文件|目录}。例如,您无法将硬盘上的文件重命名为USB闪存驱动器上的文件。在这种情况下,该方法返回false
,您必须回退到手动复制所有内容到新位置,并在旧位置删除。可以在此处找到copy
和delete
示例:https://subversivebytes.wordpress.com/2012/11/05/java-copy-directory-recursive-delete/ - zapl