public boolean downloadFile(String fileId, java.io.File path) {
FileOutputStream fos=null;
try{
fos = new FileOutputStream(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
getGoogleDriveServiceInstance().files().get(fileId).executeMediaAndDownloadTo(baos);
baos.writeTo(fos);
} catch(Exception ex) {
ex.printStackTrace();
return false;
} finally {
try{fos.close();fos=null;} catch(Exception ex){}
}
return true;
}
如果文件大小很大,则会出现以下错误 - >
Exception in thread "Thread-22" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2271)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
at com.google.api.client.util.ByteStreams.copy(ByteStreams.java:55)
at com.google.api.client.util.IOUtils.copy(IOUtils.java:94)
at com.google.api.client.util.IOUtils.copy(IOUtils.java:63)
at com.google.api.client.googleapis.media.MediaHttpDownloader.executeCurrentRequest(MediaHttpDownloader.java:247)
at com.google.api.client.googleapis.media.MediaHttpDownloader.download(MediaHttpDownloader.java:199)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeMediaAndDownloadTo(AbstractGoogleClientRequest.java:562)
at com.google.api.services.drive.Drive$Files$Get.executeMediaAndDownloadTo(Drive.java:3560)
答案 0 :(得分:2)
请参阅https://developers.google.com/api-client-library/java/google-api-java-client/media-download说明"当您从服务器下载大型媒体文件时,请使用可恢复媒体下载按块"下载文件块。