【问题标题】:Is it possible to have random access writes to a Google Drive file from the Android API?是否可以从 Android API 对 Google Drive 文件进行随机访问写入?
【发布时间】:2016-04-03 13:11:12
【问题描述】:

我正在尝试使用 Android API 在 Google Drive 中录制音频并创建一个 wav 文件。我有一个第一遍,我写了一个文件长度为 0 字节的标题,因为我不知道录制的音频会有多长时间,我不想把它全部保存在内存中。记录完成后,我会返回字节 4 并写入文件的长度。

这在使用 RandomAccessFile 时效果很好,但我不知道如何使用 Google Drive API 来做某事。 https://developers.google.com/drive/android/files

DriveContents 类 (https://developers.google.com/android/reference/com/google/android/gms/drive/DriveContents) 没有暗示任何在内容中寻找的方式。有什么想法吗?

【问题讨论】:

    标签: android google-drive-api google-drive-android-api seek randomaccessfile


    【解决方案1】:

    尝试使用 FileChannel 进行随机访问。

    您可以使用 FileOutputStream#getChannel 获取 FileChannel,然后使用 FileChannel#position(long) 查找。 写入 OutputStream 将从设置的位置开始。

    注意:我建议在访问 FileChannel 之前刷新 OutputStream。

    【讨论】:

      【解决方案2】:

      我认为这种方式是不可能的。 Google drive APIs(V2V3GDAA)都接受file streams(即串行流)作为内容。您可能知道您构建元数据 + 内容并上传(创建、修补、更新)。

      由于您需要在完成写入文件后修改your file's header,因此唯一的方法是完成本地文件中的所有内容,然后将其传输到 GooDrive Api。在这种情况下,更新/补丁对您没有帮助,因为您的标头是 GooDrive API 已知为 contents 的一大块字节的一部分。

      这是合乎逻辑的,V2 和 V3 是直接的 REST api,因此它们以串行方式发送字节。 GDAA 有朝一日可以做到这一点(见'Lifecycle of a Drive file'),但我不会屏住呼吸。

      【讨论】:

        猜你喜欢
        • 2021-01-14
        • 1970-01-01
        • 2018-04-05
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多