使用java将文件从Gdrive下载到本地系统

时间:2013-07-18 10:15:33

标签: java file download google-drive-api

Drive Quickstart:在Java示例中运行Drive App可以正常上传文件。我想使用java将文件从Gdrive下载到本地系统。 下载时会给出一个方法

private static InputStream downloadFile(Drive service, File file) {
    if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {
      try {
        HttpResponse resp =
            service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl())).execute();
        return resp.getContent();
      } catch (IOException e) {
        // An error occurred.
        e.printStackTrace();
        return null;
      }
    } else {
      // The file doesn't have any content stored on Drive.
      return null;
    }
}

以上方法,我该如何投入?从哪里我输入?任何人都可以像Quickstart上传类一样提供完整的下载代码。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以使用google drive api并发送Http get请求,你可以看到这个教程

https://developers.google.com/drive/manage-downloads

答案 1 :(得分:0)

谢谢Hanan它工作正常。通过使用retrieveAllFiles(),我可以列出所有文件。我已经使用下面的代码将检索到的文档存储在我的本地。这是一个正确的下载方式。

for(File f:result){         
        i++;
        System.out.println("File Name==>"+f.getTitle());
        System.out.println("File Id==>"+f.getId());
        System.out.println("File ext==>"+f.getFileExtension());
        System.out.println("File size==>"+f.getFileSize());
InputStream in = downloadFile(service,f);
        byte b[] = new byte[in.available()];
        in.read(b);
        java.io.File ff = new java.io.File("/home/test/Desktop/gdocs/"+f.getTitle());
        FileOutputStream fout = new FileOutputStream(ff);
        fout.write(b);
        fout.close();
} 

它将所有文档存储在本地。文本(.txt)文件在我的本地正常打开,但图像文件或pdf文件未正确打开。它提供了一些错误消息,如文件已损坏。图像或pdf文档中没有内容如何获取内容并存储它。任何建议