reading/writing 个文件时对权限和大小进行错误检查

Error-checking for permissions and size when reading/writing files

在Android中,如果我想将一个文件从一个地方复制到另一个地方:

  1. 如何检查我是否拥有正确的清单权限?我知道您在清单中包含了权限,但假设我们不知道我们是否包含它——如果我们缺少权限,我们如何捕获异常?

  2. 如何验证我是否具有源文件的读取权限?

  3. 如何验证我是否具有目标的写入权限?

  4. 如何验证是否有足够的空间来执行写入?

  5. 如何验证写入是否成功?

how do we catch the exception if we lack the permission?

这因权限而异。

How can I verify that I have read access for the source file?

Call canRead()File.

How can I verify that I have write access for the destination?

Call canWrite()File.

How can I verify that there is enough room to perform the write?

您不能,因为在您进行计算时,该值可能已因设备上其他应用程序的行为而发生变化。

您可以使用methods on StatFs来确定可用的space,但我会给自己一个很大的缓冲。

How can I verify that the write was performed successfully?

首先在 FileOutputStream 上调用 getFD().sync(),在 flush() 之后和 close() 之前,以确保所有字节都写入磁盘并且不会被缓存内核和文件系统实现。对于大多数情况,这就足够了。

也欢迎您重新阅读内容并根据您记忆中的任何内容对其进行验证,以确认该文件似乎包含它应该包含的内容。