我在一个名为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);
我收到了错误:
AmazonS3Exception: The specified key does not exist.
Bruce P.. 5
请记住,S3不是文件系统,但它是一个对象存储.两者之间存在巨大差异,一个是目录式活动根本不起作用.
假设您有一个带有两个对象的S3存储桶:
/path/to/file1.txt /path/to/file2.txt
使用这些对象/path/to/
时,在处理文件系统目录中的文件时,不能简单地引用.那是因为/path/to/
它不是一个目录,而只是一个非常大的哈希表中一个键的一部分.这就是错误消息指示密钥问题的原因.这些不是文件名路径,而是对象库中对象的键.
为了复制/path/to/
您需要在多个步骤中执行它的位置中的所有文件.首先,您需要获取其键开头的所有对象的列表/path/to
,然后您需要遍历每个单独的对象并逐个复制它们.
这是一个类似的问题,答案显示了如何使用Java从S3下载多个文件.
请记住,S3不是文件系统,但它是一个对象存储.两者之间存在巨大差异,一个是目录式活动根本不起作用.
假设您有一个带有两个对象的S3存储桶:
/path/to/file1.txt /path/to/file2.txt
使用这些对象/path/to/
时,在处理文件系统目录中的文件时,不能简单地引用.那是因为/path/to/
它不是一个目录,而只是一个非常大的哈希表中一个键的一部分.这就是错误消息指示密钥问题的原因.这些不是文件名路径,而是对象库中对象的键.
为了复制/path/to/
您需要在多个步骤中执行它的位置中的所有文件.首先,您需要获取其键开头的所有对象的列表/path/to
,然后您需要遍历每个单独的对象并逐个复制它们.
这是一个类似的问题,答案显示了如何使用Java从S3下载多个文件.