1

现在我正在使用这种方法在 iOS 中移动非常大的文件:

[fileManager moveItemAtURL:srcURL toURL:toURL error:&error];

这是来自 NSFileManager 的方法。因为文件太大,我尝试移动它们而不是复制然后删除源文件。

有没有更安全的方法来做到这一点?

4

2 回答 2

4

文件移动是一个非常轻量级的操作;它不涉及复制任何内容,因为它只是将目录条目从文件系统中的一个点移动到另一个点。

应该是相当安全的。

如果你真的很想偏执,那么:

  • 将所有字节从 A 复制到 B
  • 验证 B 是连贯的
  • 删除 A

这就是写入/复制 API 的“原子”变体在幕后所做的,除了验证部分之外,因为文件系统本身应该这样做。

于 2013-04-19T15:50:34.773 回答
3

你所做的是正确和有效的。移动文件(如果移动到同一个文件系统)基本上是即时的。但是复制和删除很慢。请注意,将文件移动到不同的文件系统实际上是通过复制和删除来完成的。

于 2013-04-19T15:50:38.880 回答