使用scala从s3存储桶下载所有文件
我尝试下面的代码成功下载了一个文件,但无法下载所有文件列表使用scala从s3存储桶下载所有文件,scala,amazon-s3,Scala,Amazon S3,我尝试下面的代码成功下载了一个文件,但无法下载所有文件列表 client.getObject( new GetObjectRequest(bucketName, "TestFolder/TestSubfolder/Psalm/P.txt"), new File("test.txt")) 提前谢谢 更新 我尝试了下面的代码,但得到的目录列表,我想要的文件列表,而不是 val listObjectsRequest = new ListObjectsRequest(). with
client.getObject(
new GetObjectRequest(bucketName, "TestFolder/TestSubfolder/Psalm/P.txt"),
new File("test.txt"))
提前谢谢
更新
我尝试了下面的代码,但得到的目录列表,我想要的文件列表,而不是
val listObjectsRequest = new ListObjectsRequest().
withBucketName("tivo-hadoop-dev").
withPrefix("prefix").
withDelimiter("/")
client.listObjects(listObjectsRequest).getCommonPrefixes
这是一件简单的事情,但在得出下面提到的答案之前,我像其他任何事情一样挣扎。
我找到了一个java代码,并相应地更改为scala,它成功了
val client = new AmazonS3Client(credentials)
val listObjectsRequest = new ListObjectsRequest().
withBucketName("bucket-name").
withPrefix("path/of/dir").
withDelimiter("/")
var objects = client.listObjects(listObjectsRequest);
do {
for (objectSummary <- objects.getObjectSummaries()) {
var key = objectSummary.getKey()
println(key)
var arr=key.split("/")
var file_name = arr(arr.length-1)
client.getObject(
new GetObjectRequest("bucket" , key),
new File("some/path/"+file_name))
}
objects = client.listNextBatchOfObjects(objects);
} while (objects.isTruncated())
val客户端=新AmazonS3Client(凭据)
val listObjectsRequest=新建listObjectsRequest()。
withBucketName(“bucket name”)。
withPrefix(“path/of/dir”)。
带分隔符(“/”)
var objects=client.listObjects(listObjectsRequest);
做{
对于(objectSummary,下面的代码非常快速且有用,尤其是当您希望下载特定本地目录中的所有对象时。它将文件保存在完全相同的s3前缀层次结构下
val xferMgrForAws:TransferManager = TransferManagerBuilder.standard().withS3Client(awsS3Client).build();
var objectListing:ObjectListing = null;
objectListing = awsS3Client.listObjects(awsBucketName, prefix);
val summaries:java.util.List[S3ObjectSummary] = objectListing.getObjectSummaries();
if(summaries.size() > 0) {
val xfer:MultipleFileDownload = xferMgrForAws.downloadDirectory(awsBucketName, prefix, new File(localDirPath));
xfer.waitForCompletion();
println("All files downloaded successfully!")
} else {
println("No object present in the bucket !");
}
在请求帮助之前,您需要尝试一些方法。您尝试读取了所有文件的哪些内容以及出现了哪些错误?用我现在尝试的内容更新了qn,您能帮助@kannaiyan吗