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に同名ファイルが存在した場合は、上書きしてしまいますので、転送エラーが発生した場合にファイルが破損する可能性があります。そのため、転送が成功したときに、ファイルをリネームして置き換えています。