Android Storage Access Framework文档以递归方式创建文件和目录

李嘉嘉

首先。

感谢您阅读此问题。

目前,我是Android新手(就像已经开始学习一个月一样)

现在,我需要在SD卡上“递归”写入文件和目录。

我的代码如下工作.....

private void recursiveFolderDownload(String src, Uri dst) throws SftpException {
    Log.e("dst",dst.toString());
    DocumentFile pickedDir = DocumentFile.fromTreeUri(context, dst);
    Vector<ChannelSftp.LsEntry> fileAndFolderList = channelSftp.ls(src);
    for (ChannelSftp.LsEntry item : fileAndFolderList) {
        if (!item.getAttrs().isDir()) {
            DocumentFile newFile = pickedDir.createFile("",item.getFilename());
            write(src + "/" + item.getFilename(),newFile.getUri());
        } else if (!(".".equals(item.getFilename()) || "..".equals(item.getFilename()))) {
            DocumentFile newDir = pickedDir.createDirectory(item.getFilename());
            recursiveFolderDownload(src + "/" + item.getFilename(), newDir.getUri());
        }
    }
}

老实说,我编写的每个文件和目录都只写在同一路径上

这是最上面的(content://com.android.externalstorage.documents/tree/E3AB-1A0D%3A)

我是认真的!

每个文件和目录都写在最上面!

我在这里想念什么吗?

如果我这样做,请明智的人为我提供解决方案。

再次感谢您阅读此问题

希望你有美好的一天

常用软件

看看这是否更好:

private void recursiveFolderDownload(String src, DocumentFile pickedDir) throws SftpException {
    Log.e("dst",dst.toString());

    Vector<ChannelSftp.LsEntry> fileAndFolderList = channelSftp.ls(src);

    for (ChannelSftp.LsEntry item : fileAndFolderList) {
        if (!item.getAttrs().isDir()) {
            DocumentFile newFile = pickedDir.createFile("",item.getFilename());
            write(src + "/" + item.getFilename(),newFile.getUri());
        } else if (!(".".equals(item.getFilename()) || "..".equals(item.getFilename()))) {
            DocumentFile newDir = pickedDir.createDirectory(item.getFilename());
            recursiveFolderDownload(src + "/" + item.getFilename(), newDir);
        }
    }
}

在现有代码中,您:

  • 使用创建目录 createDirectory()
  • 解开了DocumentFilecreateDirectory()使用getUri()
  • 尝试重新DocumentFile使用fromTreeUri()

一直使用DocumentFile直到您绝对需要Uri(in write())时,它更安全,更有效

您的初始呼叫recursiveFolderDownload()将使用DocumentFile.fromTreeUri(context, dst)我从原始样本中删除呼叫。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中使用Storage Access Framework保存文件

来自分类Dev

Android:通过Storage Access Framework从URI中使用意图选择器打开文件

来自分类Dev

如何使用Storage Access Framework在SD卡中创建新文件夹?

来自分类Dev

Android系统如何创建/ storage / self / primary目录?

来自分类Dev

如何在Android Storage中复制文件?

来自分类Dev

使用KitKat Storage Access Framework后打开Google云端硬盘文件内容URI

来自分类Dev

无法弄清楚如何一起使用ACTION_VIEW和Storage Access Framework

来自分类Dev

如何使用Android访问存储在Bluemix Object Storage中的文件?

来自分类Dev

如何使用Storage Access Framework(SAF)在可移动SD卡中获取绝对路径?

来自分类Dev

如何使用Android Studio中创建的应用程序将文件上传到Google Cloud Storage?

来自分类Dev

如何在Firebase Storage中创建文件夹?

来自分类Dev

Android未创建文件

来自分类Dev

Android从drawable创建文件

来自分类Dev

在Android中使用文字和图像创建文件

来自分类Dev

Android的Google Cloud Storage管理

来自分类Dev

FileNotFoundException:/ storage / emulated / 0 / Android

来自分类Dev

使用Microsoft Access创建文档数据库

来自分类Dev

Android代码未创建文件。找不到这样的文件或目录错误

来自分类Dev

如何在Android Studio中为我的类和方法创建文档?

来自分类Dev

Firebase Storage Android:如何更改下载文件的文件名?

来自分类Dev

Android Internal Storage上的文件夹通过MTP显示为文件吗?

来自分类Dev

Firebase Storage Android:如何更改下载文件的文件名?

来自分类Dev

在Android应用程序目录中创建文件夹列表

来自分类Dev

Android-使用Google Scoped Storage API以本机C / C ++代码访问文件

来自分类Dev

android 中的 Gdx.files.local 和 WRITE_EXTERNAL_STORAGE 权限

来自分类Dev

Android Studio无法创建文件

来自分类Dev

Android FileOutputStream不创建文件

来自分类Dev

Azure Storage Android API,安全吗?

来自分类Dev

如何在Computer \ Nexus 5 \ Internal storage文件夹中创建文件夹

Related 相关文章

  1. 1

    在Android中使用Storage Access Framework保存文件

  2. 2

    Android:通过Storage Access Framework从URI中使用意图选择器打开文件

  3. 3

    如何使用Storage Access Framework在SD卡中创建新文件夹?

  4. 4

    Android系统如何创建/ storage / self / primary目录?

  5. 5

    如何在Android Storage中复制文件?

  6. 6

    使用KitKat Storage Access Framework后打开Google云端硬盘文件内容URI

  7. 7

    无法弄清楚如何一起使用ACTION_VIEW和Storage Access Framework

  8. 8

    如何使用Android访问存储在Bluemix Object Storage中的文件?

  9. 9

    如何使用Storage Access Framework(SAF)在可移动SD卡中获取绝对路径?

  10. 10

    如何使用Android Studio中创建的应用程序将文件上传到Google Cloud Storage?

  11. 11

    如何在Firebase Storage中创建文件夹?

  12. 12

    Android未创建文件

  13. 13

    Android从drawable创建文件

  14. 14

    在Android中使用文字和图像创建文件

  15. 15

    Android的Google Cloud Storage管理

  16. 16

    FileNotFoundException:/ storage / emulated / 0 / Android

  17. 17

    使用Microsoft Access创建文档数据库

  18. 18

    Android代码未创建文件。找不到这样的文件或目录错误

  19. 19

    如何在Android Studio中为我的类和方法创建文档?

  20. 20

    Firebase Storage Android:如何更改下载文件的文件名?

  21. 21

    Android Internal Storage上的文件夹通过MTP显示为文件吗?

  22. 22

    Firebase Storage Android:如何更改下载文件的文件名?

  23. 23

    在Android应用程序目录中创建文件夹列表

  24. 24

    Android-使用Google Scoped Storage API以本机C / C ++代码访问文件

  25. 25

    android 中的 Gdx.files.local 和 WRITE_EXTERNAL_STORAGE 权限

  26. 26

    Android Studio无法创建文件

  27. 27

    Android FileOutputStream不创建文件

  28. 28

    Azure Storage Android API,安全吗?

  29. 29

    如何在Computer \ Nexus 5 \ Internal storage文件夹中创建文件夹

热门标签

归档