是否可以从Android API随机访问Google Drive文件?

时间:2015-12-29 16:03:05

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

我尝试使用Android API在Google云端硬盘中录制音频和创建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)没有提示在内容中寻找任何方式。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

我认为不可能这样。 Google云端硬盘Apis(V2V3GDAA)都接受file streams(即串行流)作为内容。您可能知道您构建了元数据+内容并上传(创建,修补,更新)。

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

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

祝你好运