【问题标题】:In Android, can a file be moved to inside the app's private directory?在 Android 中,可以将文件移动到应用程序的私有目录中吗?
【发布时间】:2019-10-01 04:46:39
【问题描述】:

我在下载目录中有一个文件。我们称它为 OldFile,属于 File 类。

我似乎可以使用OldFile.renameTo(File(some new file path)) 将它移动到任何我喜欢的地方,除非新文件路径位于从context.filesDir 获得的应用程序的私有文件目录中。

这个 Kotlin sn-p 可以工作,例如:

val newFileLocation = File(Environment.getExternalStorageDirectory().absolutePath + "/test.txt")
oldFile.renameTo(newFileLocation)

但是这个 sn-p 静默失败,不抛出异常,让oldFile 完全不变:

val newFileLocation = File(context?.filesDir?.absolutePath + "/test.txt")
oldFile.renameTo(newFileLocation)

是否有一些规则禁止使用 File.renameTo 将文件移动到 filesDir 路径中?

我该怎么做呢?

谢谢

约翰

【问题讨论】:

  • 如果所有其他方法都失败 - 将文件作为二进制数据读取,将其作为二进制数据写入您想要的位置,然后删除原始数据。

标签: android kotlin android-file


【解决方案1】:

renameTo() 仅适用于同一“分区”上的文件。

显然 getFilesDir() 位于不同的分区上。

【讨论】:

  • 这似乎可以解释它,即使下载目录和filesDir都在同一个存储设备上,而外部存储是不同的存储设备!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多