2017-12-31 21 views
0

Ich habe ein AWS S3 mit folgenden Struktur oder Hierarchie:Liste Inhalt des AWS S3 Eimers

  • Kunde/Name/Vorname/123.gz

  • Kunde/Name/Vornamen/456. gz

  • Kunde/Name/Vorname/789.gz

ich brauche Zählung aller gz fi zu bekommen les in kunden/name/vorname mit java sdk.

Kann ich bitte einen Java-Code haben, wie es geht?

+0

Das Java SDK ist dokumentiert. Sie müssen eine Aufnahme machen und dann Ihren Code und den Fehler oder die Ausnahme oder das unerwartete Verhalten, auf das Sie stoßen, anzeigen. https://stackoverflow.com/help/mcve –

Antwort

0

Es gibt mehrere Möglichkeiten, eine Liste von Dateien von S3 zu erhalten. Dies ist einer von ihnen:

/** 
* @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. Ich nehme an, Sie haben bereits S3 Anmeldeinformationen in Ihrem Home-Verzeichnis und erfolgreich initialisiert AmazonS3 s3 Instanz.