我尝试使用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)没有提示在内容中寻找任何方式。有什么想法吗?
答案 0 :(得分:3)
尝试使用FileChannel进行随机访问。
您可以使用FileOutputStream#getChannel获取FileChannel,然后使用FileChannel#position(long)进行搜索。 然后写入OutputStream将从设置位置开始。
注意:我建议在访问FileChannel之前刷新OutputStream。
答案 1 :(得分:1)
我认为不可能这样。 Google云端硬盘Apis(V2,V3,GDAA)都接受file streams
(即串行流)作为内容。您可能知道您构建了元数据+内容并上传(创建,修补,更新)。
由于您在完成文件写入后需要修改your file's header
,因此唯一的方法是完成本地文件中的所有内容,然后将其流式传输到GooDrive Api。在这种情况下,更新/补丁将无法帮助您,因为您的标头是GooDrive Apis已知为contents
的一大块字节的一部分。
这是合乎逻辑的,V2和V3是直接的REST api,因此它们以串行方式发送字节。有一天希望GDAA可以这样做(参见'Lifecycle of a Drive file'),但我不会屏住呼吸。
祝你好运