我有一个具有以下结构或层次结构的AWS S3:
客户/名称/姓名/ 123.gz
客户/名称/姓名/ 456.gz
客户/名称/姓名/ 789.gz
我需要使用java sdk来计算customer / name / firstname中的所有gz文件。
我可以请一份关于如何操作的Java代码吗?
答案 0 :(得分:2)
有几种方法可以从S3
获取文件列表。这是其中之一:
/**
* @bucketName bucket name (i.e. customer)
* @path path within given bucket (i.e. name/firstname)
* @pattern pattern that matches required files (i.e. "\\w+\\.gz")
*/
private List<String> getFileList(String bucketName, String path, Pattern pattern) throws AmazonS3Exception {
ListObjectsV2Request request = createRequest(bucketName, path);
return s3.listObjectsV2(request).getObjectSummaries().stream()
.map(file -> FilenameUtils.getName(file.getKey()))
.filter(fileName -> pattern.matcher(fileName).matches())
.sorted()
.collect(Collectors.toList());
}
private static ListObjectsV2Request createRequest(String bucketName, String path) {
ListObjectsV2Request request = new ListObjectsV2Request();
request.setPrefix(path);
request.withBucketName(bucketName);
return request;
}
P.S。我认为您的主目录中已经拥有S3
个凭据并成功初始化了AmazonS3 s3
个实例。