使用Google Drive API 制作本地文件副本

4
我希望使用Google Drive Android API将Google Drive中的“.ppt”文件制作成本地副本(外部存储)。
我正在读取一个字节并将其写入我的本地文件。但是,当我尝试打开它时,显示文件已损坏。请帮助我解决这个问题。
final DriveFile file = Drive.DriveApi.getFile(getClient(), fileid);
final Metadata[] metadata = new Metadata[1];

file.getMetadata(getClient())
.setResultCallback(new ResultCallback<DriveResource.MetadataResult>() {
    @Override
    public void onResult(DriveResource.MetadataResult metadataResult) {
        metadata[0] = metadataResult.getMetadata();
        L.b(EditorWindow.this, metadata[0].getMimeType(), 0);
    }
});

file.open(getClient(), DriveFile.MODE_READ_ONLY, null)
.setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {
    @Override
    public void onResult(DriveApi.DriveContentsResult result) {
        if (!result.getStatus().isSuccess()) {
            L.c("Error in creating new file");
            return;
        }
        DriveContents contents = result.getDriveContents();
        String filename = metadata[0].getTitle();
        File localFile = new File(Environment.getExternalStorageDirectory(), filename);
        OutputStream out = null;
        InputStream in = null;
        try {
            out = new BufferedOutputStream(new FileOutputStream(localFile));
            in = contents.getInputStream();
            int b;
            while ( (b = in.read()) > 0) {
                out.write(b);
            }
            in.close();
            out.close();
        } catch (Exception e) {L.c("Error in writing to SD card");}
        contents.discard(getClient());
    }
});

我已经尝试过使用txt文件并且它按预期工作,你是否尝试使用其他文件类型?这里所讨论的ppt是Google幻灯片文档还是Microsoft Power Point文档? - Arthur Thompson
@kroikie中的'ppt'指的是微软PowerPoint演示文稿。 - sv_jan5
1个回答

5

是的,您的建议非常完美!谢谢。 - sv_jan5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接