java - Android 中的 file.renameTo(file) 会出什么问题

标签 java android file file-io file-rename

我正在阅读 Android SDK docFile.class 中的 renameTo(File) 文档.

我们已经在生产中使用这种方法一段时间了,但我仍然想知道哪些地方可能会出错。文档说

将此文件重命名为 newPath。文件和目录都支持此操作。

Many failures are possible. Some of the more likely failures include:

  • Write permission is required on the directories containing both the source and destination paths.

  • Search permission is required for all parents of both paths.

  • Both paths be on the same mount point. On Android, applications are most likely to hit this restriction when attempting to copy between internal storage and an SD card. Note that this method does not throw IOException on failure. Callers must check the return value.

renameTo() 可能失败的其他可能原因是什么(指更有可能失败)?调用renameTo后是否有保证状态?当 renameTo() 失败时,我可以依赖我的原始文件吗?除了文档中描述的条件之外,我还想检查其他任何条件以确保它能正常工作吗?

最佳答案

列出的三个是更有可能的失败。不太可能(但有可能!)的失败包括

  • 用户错误(例如源是文件而目标是现有目录,反之亦然)
  • 设备上没有剩余空间
  • 文件系统挂载为只读
  • 损坏的文件系统
  • 旋转磁盘上的坏扇区
  • ...

由于 Android 基于 Linux,您可能可以依赖这些:

  • 如果重命名失败,两个文件都保持原样
  • 如果目标文件存在,并且重命名成功,任何进程都不会发现目标文件丢失(替换是原子的)

关于java - Android 中的 file.renameTo(file) 会出什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369186/

相关文章:

java - 在远程 View 中使用粗体文本

java - 库中的 generateReleaseBuildConfig 错误

java - 如何将重复数组元素分配为唯一键,并计算相应的整数值?

c - 将两个二进制文件合并到一个新文件中

Python 打印到文件不工作

java - 如何避免页面重定向时 Internet Explorer 出现黑屏或白屏?

java - 如何从 jna 引用指针检索 java 类

java - 两个jar文件合并成一个exe

android - 如何使用 TextView 在 android 中连续更改文本颜色...?

java - 在 Android 的 TextView 中显示分数?