GoogleドライブからAndroidへファイルコピーの前提として、以下の記事をご覧ください。
AndroidからGoogleドライブにファイルコピーした後の同名ファイル削除
AndroidからGoogleドライブへのファイルコピーと同様にファイルストリームを使用してファイルをコピーします。
getFilesTask()
.continueWithTask(task -> {
MetadataBuffer metadataBuffer = task.getResult();
DriveId driveId = metadataBuffer.get(0).getDriveId();
return getDriveResourceClient().openFile(driveId.asDriveFile(), DriveFile.MODE_READ_ONLY);
})
.continueWith(task -> {
DriveContents driveContents = task.getResult();
InputStream inputStream = driveContents.getInputStream();
String restoreFile = /* Androidにコピーするファイル名 */ + ".tmp";
FileOutputStream fileOutputStream = new FileOutputStream(restoreFile);
byte[] buffer = new byte[inputStream.available()];
int data;
while ((data = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, data);
}
return restoreFile;
})
.addOnSuccessListener(this, restoreFile -> {
File sourceFile = new File(restoreFile);
File destFile = new File(restoreFile.replace(".tmp", ""));
sourceFile.renameTo(destFile);
})
.addOnFailureListener(this, e -> {
// 失敗時の処理
})
.addOnCompleteListener(this, result -> {
// (必要なら)完了時の処理
});
1~6行目 Googleドライブ上のファイルを取得するために、getFilesTask() でファイル一覧を取得し、先頭(最新)のファイルを取得します。
11,22~24行目 “.tmp”を付加しているのは、Androidに同名ファイルが存在した場合は、上書きしてしまいますので、転送エラーが発生した場合にファイルが破損する可能性があります。そのため、転送が成功したときに、ファイルをリネームして置き換えています。