java - 如何复制格式为“bucketName/folder1/folder2”的存储桶的内容

标签 java amazon-s3

我想复制folder2的内容而不是bucketName的全部内容。我正在使用以下代码但没有成功。我实际上没有看到任何输出。如果我只复制存储桶的内容而不是子文件夹,我会看到目标存储桶中的全部内容。如何只复制存储桶下子文件夹2的内容。

 System.out.println("Listing objects and copying objects");
        if (!prefix.endsWith(delimiter)) {
            prefix += delimiter;
        }
        ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
            .withBucketName(bucketName)
            .withPrefix(prefix)
            .withDelimiter(delimiter);
        ObjectListing objectListing;            
            objectListing = s3Client.listObjects(listObjectsRequest);
            for (S3ObjectSummary objectSummary : 
                objectListing.getObjectSummaries()) { s3Client.copyObject(bucketName, objectSummary.getKey(), bucketName2,  "output/" + objectSummary.getKey());
                System.out.println(" - " + objectSummary.getKey() + "  " +
                        "(size = " + objectSummary.getSize() + 
                        ")");
            listObjectsRequest.setMarker(objectListing.getNextMarker());

最佳答案

我设置了一些东西来和你一起尝试一下。我创建了两个存储桶,一个名为 mytestbucket20141006,充当源,另一个名为 mytestbucket20141006b,充当目标。在源存储桶中,我有一个名为 afolder 的文件夹,其中包含几个文件。

以下代码成功将对象复制到目标:

    ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
        .withBucketName("mytestbucket20141006")
        .withPrefix("afolder/afolder2/afolder3");
        //.withDelimiter("/");
    ObjectListing objectListing = s3.listObjects(listObjectsRequest);
    for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
        String key = objectSummary.getKey();
        String newKey = key.replace("afolder/afolder2/afolder3/", "afolder3/");
        s3.copyObject("mytestbucket20141006", key, "mytestbucket20141006b",  newKey);
        System.out.println(key);
    }

关于java - 如何复制格式为“bucketName/folder1/folder2”的存储桶的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221273/

相关文章:

amazon-web-services - 如何使用 Node.js 在 AWS Lambda 函数上播放 S3 Bucket 中的音频文件?

java - 代理 Java Web 服务

java - 将存储库 impl 放在非基础包中

java - Excel 显示 : "Excel file is not a valid file extension or format type..."

javascript - 通过node js从本地同时上传多个文件到s3桶

php - Laravel+Plupload 上传到 S3 的预检响应无效 - CORS

java - 在 Java swing 中获取组合框值

java - @运行时的值

wordpress - Amazon S3 - 如何每月将 1 个备份文件转换到 Glacier

python - S3分段上传-异步完成分段上传