如何从Amazon S3下载文件?

kyl*_*las 2 java amazon-s3 amazon-web-services

我在一个名为output的桶中命名了一个文件夹BucketA.我有一个文件output夹列表.如何使用AWS Java SDK将它们下载到本地计算机?

以下是我的代码:

AmazonS3Client s3Client = new AmazonS3Client(credentials);
        File localFile = new File("/home/abc/Desktop/AmazonS3/");
        s3Client.getObject(new GetObjectRequest("bucketA", "/bucketA/output/"), localFile);
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

AmazonS3Exception: The specified key does not exist.
Run Code Online (Sandbox Code Playgroud)

Bru*_*e P 5

请记住,S3不是文件系统,但它是一个对象存储.两者之间存在巨大差异,一个是目录式活动根本不起作用.

假设您有一个带有两个对象的S3存储桶:

/path/to/file1.txt
/path/to/file2.txt
Run Code Online (Sandbox Code Playgroud)

使用这些对象/path/to/时,在处理文件系统目录中的文件时,不能简单地引用.那是因为/path/to/它不是一个目录,而只是一个非常大的哈希表中一个键的一部分.这就是错误消息指示密钥问题的原因.这些不是文件名路径,而是对象库中对象的键.

为了复制/path/to/您需要在多个步骤中执行它的位置中的所有文件.首先,您需要获取其键开头的所有对象的列表/path/to,然后您需要遍历每个单独的对象并逐个复制它们.

这是一个类似的问题,答案显示了如何使用Java从S3下载多个文件.