【发布时间】:2016-07-01 14:30:11
【问题描述】:
我正在我的应用程序中实现文件浏览器功能。我知道如何使用 ACTION_OPEN_DOCUMENT_TREE 意图获得外部 sd 卡的持久权限,以及如何使用 DocumentFile 类创建文件夹和删除文件/文件夹。
但是,我找不到将文件复制/移动到外部 sd 卡文件夹的方法。你能指出我正确的方向吗?
【问题讨论】:
-
“但是我找不到将文件复制/移动到外部 sd 卡文件夹的方法”——除了可能之外,您无权访问“外部 sd 卡文件夹”通过
getExternalFilesDirs()(复数)和亲属。您是否打算使用存储访问框架来询问用户将内容复制到哪里?如果是这样,请使用 Java I/O 从源Uri中的InputStream复制到目标Uri的OutputStream。 -
如果我使用 Java 文件系统,我没有修改辅助 sd 卡的权限。示例:创建文件夹:(new File(path)).mkdir();不起作用,但通过 documentFile.createDirectory(name); 使用新的 SAF; (其中 documentFile 是使用 DocumentFile.fromTreeUri(context, treeUri) 创建的)确实有效。所以我正在寻找一种使用 DocumentsContract API 复制文件的方法。
-
正如我所指出的,为您的原件获取
Uri,为您的预期副本获取Uri,在两者上打开流,并执行 Java I/O。我不记得内置的复制或移动操作,至少在当前的 Android 发布版本中是这样。 -
效果很好,谢谢!
标签: android android-external-storage storage-access-framework