【发布时间】:2012-04-17 16:31:09
【问题描述】:
所以我在 Java 中使用 AWS 开发工具包,并创建了一个类来下载 S3 服务器中的存储桶/对象。
我现在需要创建诸如通配符或模式之类的东西来附加一个名为(“报告”)的字符串。我想出的唯一方法是创建一个模式匹配器变量,如下所示:
Pattern p = Pattern.compile("[a-zA-Z][0-9]");
Matcher m = p.matcher(prePattern);
ObjectListing s3ObjectList = s3client.listObjects(new ListObjectsRequest()
.withBucketName(bucketName)
.withPrefix(m + "reports"));+
谁能告诉我是否有更好的解决方案来解决我正在尝试做的事情,或者我是否做得正确?
谢谢!
新代码:
String bucketName = "blabla";
String prePattern = "^[a-z0-9_-]{1,30}$";
String prefixPat = " -- Insert Pattern Here -- ";
ArrayList<String> objPrefix = new ArrayList();
Pattern p = Pattern.compile(prePattern);
Matcher m = p.matcher(prefixPat);
for(int i=0; i<= objPrefix.size(); i++)
{
objPrefix.add(m + "reports");
ObjectListing s3ObjectList = s3client.listObjects(new ListObjectsRequest()
.withBucketName(bucketName)
.withPrefix(objPrefix.get(i)));
}
你们觉得呢?真的很感激。谢谢!
【问题讨论】:
-
哪个更好,或者哪个更好/更正确?
-
您正在创建一个 Matcher 对象,但不是实际使用它,而是将其转换为字符串。这永远不会是正确的。
-
我明白了。你对我应该如何以不同的方式处理这个问题有什么建议吗?我需要在“报告”之前创建一个模式。
-
好吧,我在 Amazon S3 API 中绝对看不到任何采用 Matcher 对象的方法,是吗?我认为您将不得不获得比您想要的更大的列表,然后通过应用程序中的模式匹配来缩减结果。
标签: java class amazon-s3 amazon-web-services amazon