代码之家  ›  专栏  ›  技术社区  ›  Shashank Degloorkar

Lollipop SDCard文档写入

  •  0
  • Shashank Degloorkar  · 技术社区  · 10 年前

    我有一个第三方库,它接受File对象并对其进行修改。 现在在获得SD卡使用许可后

     Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    

    然后选择SD卡根目录。

    然后用户浏览他想要修改的文件。现在这个 我需要传递给第三方库类的文件路径/文件对象。

     DocumentFile documentFile = DocumentFile.fromFile(file);
     String documentURI = documentFile.getUri().toString();
     MP3File mp3File = null;
    
     documentFile = DocumentFile.fromFile(file);
     mp3File = new MP3File(file.getAbsolutePath());
    

    这里,MP3File类接受文件路径。但此类没有任何Document构造函数。

    我可以将文档转换为可写文件吗?我可以用原始文件替换它吗?或者有更简单的解决方案吗?

    1 回复  |  直到 10 年前
        1
  •  2
  •   CommonsWare    10 年前

    现在在获得SD卡使用权限后…并选择SD卡根目录。

    用户无需选择任何特定文档。文件 可以 位于可移动存储、外部存储、Google Drive、Dropbox、文件服务器或用户可以访问的任何其他位置。

    现在,我需要将这个文件的路径/文件对象传递给第三方库类。

    该文档没有“路径/文件对象”。

    此处,MP3File类接受文件路径

    要么:

    • 找到一个更好的库,一个接受 InputStream 和/或 OutputStream ,因此您可以使用它所在的文档,或

    • 使用Java I/O将文档的内容复制到您控制的本地文件中,然后将该文件传递给库