![](/img/trans.png)
[英]How can we download multiple files without folder from S3 bucket using Java SDK
[英]How to Download entire Folder located on S3 Bucket?
我已经使用Java SDK并尝试使用GetObjectRequest类下载Folder,但是有可能下载我的文件夹,包括其subFolder和所有要下载的文件吗?
您可以使用TransferManager
类中的downloadDirectory
方法:
TransferManager transferManager = new TransferManager(new DefaultAWSCredentialsProviderChain());
File dir = new File("destDir");
MultipleFileDownload download = transferManager.downloadDirectory("myBucket", "myKey", dir);
download.waitForCompletion();
正如文档中所写,此方法:
将给定目标目录的给定keyPrefix指定的虚拟目录中的所有对象下载。 所有虚拟子目录将递归下载。
您必须调用ListBucket API来获取文件列表,然后使用GetObject单独下载每个文件
是的,使用TransferManager.downloadFolder :)
这是下载整个存储桶(经过一些测试)的代码:
import com.amazonaws.AmazonServiceException;
import aws.example.s3.XferMgrProgress;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.MultipleFileDownload;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import java.io.*;
import com.amazonaws.auth.PropertiesFileCredentialsProvider;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.AmazonClientException;
public class S3DownloadApp {
public static void main(String [] args){
AWSCredentials credentials = null;
try {
credentials = new PropertiesFileCredentialsProvider("keys.props").getCredentials();
} catch (Exception e) {
throw new AmazonClientException(
"Cannot load the credentials from the credential profiles file. " , e);
}
TransferManager xfer_mgr = TransferManagerBuilder.standard().withS3Client(AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)).withRegion("us-west-2").build()).build();//TransferManagerBuilder.standard().build();
try {
MultipleFileDownload xfer = xfer_mgr.downloadDirectory(
"bucketName", null, new File("/Users/admin/Desktop/downloadFolder"));
XferMgrProgress.showTransferProgress(xfer);
XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.