Sai Sai -3 years ago 115
Java Question

Way in Java to check if S3 bucket has objects with keys matching a wildcard patterrn

What is a good way from a Scala or Java program to check if an S3 bucket has objects matching a certain key pattern? That is, if i have a bucket named "CsvBucket" how can i check if it contains an object where the key matches the pattern "processed/files/2015/8/*.csv" ?


Answer Source

Since S3 object keys are just Strings you can just iterate over them and test each using a regular expression. Perhaps something like this (using jets3t library):

Pattern pattern = Pattern.compile(".*\\.csv");
// 'service' is an instance of S3Service
S3Bucket bucket = service.getBucket(bucketName);
S3Object[] files = service.listObjects(bucket, "processed/files/2015/8", null);
for (int i = 0; i < files.length; i++)
    if (pattern.matches(files[i].getKey()))
        // ... work with the file ...
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download