Obtenir une liste de fichiers S3 avec ListObjectsV2Request (AWS SDK for Java)

Aperçu

--Utilisez ListObjectsV2Request pour obtenir une liste de fichiers --ListObjectsV2Request ne peut pas renvoyer toutes les listes en une seule demande --Si ListObjectsV2Result # isTruncated est true, toutes les listes de fichiers ne peuvent pas être obtenues.

Obtenez une liste de tous les fichiers ʻIterator`

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.ListObjectsV2Request;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import lombok.val;

import java.util.*;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

class S3ObjectSummaryIterator implements Iterator<S3ObjectSummary> {

    private final AmazonS3 client;
    private final ListObjectsV2Request request;
    private final Queue<S3ObjectSummary> summaries = new LinkedList<>();
    private boolean isTruncated = false;

    S3ObjectSummaryIterator(AmazonS3 client, ListObjectsV2Request request) {
        this.client = client;
        this.request = request;
        fetch();
    }

    private void fetch() {
        val result = this.client.listObjectsV2(this.request);
        summaries.addAll(result.getObjectSummaries());
        this.isTruncated = result.isTruncated();
        if (result.isTruncated()) {
            request.setContinuationToken(result.getNextContinuationToken());
        }
    }

    @Override
    public boolean hasNext() {
        if (summaries.isEmpty() && isTruncated) {
            fetch();
        }
        return !summaries.isEmpty();
    }

    @Override
    public S3ObjectSummary next() {
        return summaries.poll();
    }

    public static Stream<S3ObjectSummary> stream(AmazonS3 client, ListObjectsV2Request request) {
        val iterator = new S3ObjectSummaryIterator(client, request);
        return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false);
    }

}

référence

Recommended Posts

Obtenir une liste de fichiers S3 avec ListObjectsV2Request (AWS SDK for Java)
Obtenir une liste d'informations MBean pour les applications Java
Obtenir la taille de l'objet S3 avec AWS SDK pour Ruby
[AWS SDK for Java] Définir la stratégie de nouvelle tentative pour le client S3
Configurer des cookies signés (pour CloudFront) avec des stratégies personnalisées à l'aide du kit AWS SDK pour Java
Une liste de rawValues pour UITextContentType.
Trier la liste des objets Java
Crypter les données téléchargées vers S3 à l'aide du kit AWS SDK pour Java / SSE-KMS
Importer / télécharger / supprimer en bloc des données sur S3 à l'aide d'Amazon S3 Client Builder avec AWS SDK pour Java
[Java] Obtenir des éléments List / Map avec Iterator
Liste des destinations de téléchargement pour Oracle Java
Obtenez des horodatages avec le SDK Java Azure BlobStorage
[Java] [ibatis] Comment obtenir des enregistrements de relation 1 à N avec List <Map <>>
J'ai créé un outil Diff pour les fichiers Java
Résumé Il n'y a rien de particulier. Dois-je y prêter attention? .. .. J'ai ressenti cela, alors j'ai écrit un article. Si vous avez des commentaires, veuillez. Obtenez des informations de bloc avec le SDK Java de Python, Python3, Glossy Hyperledger Iroha
Jusqu'à ce que vous exécutiez un programme Java avec le SDK AWS local sur Windows
Une collection de questions simples pour les débutants Java
Code pour supprimer tous les fichiers du préfixe spécifié dans AWS S3 (Java)
Valider le jeton d'ID d'un utilisateur authentifié par AWS Cognito en Java
Soumettre une tâche à AWS Batch avec Java (Eclipse)
[Bases de Java] Créons un triangle avec une instruction for
Obtenez la configuration Azure App Service pour Java avec System.getEnv ()
Obtenez une liste de classes dans un package spécifique à Guava
Sortie d'une liste de paramètres cron pour tous les utilisateurs.
Liste des instructions Java fréquemment utilisées (pour les débutants et les débutants)
Informations d'identification référencées par le kit AWS SDK for Java par défaut
Notifier quotidiennement Slack des factures AWS avec Lambda pour Ruby
Déploiement d'un environnement Java avec le sous-système Windows pour Linux (WSL)
Histoire de créer une application de gestion de tâches avec Swing, Java
Je veux faire une liste avec kotlin et java!
Implémentation d'un analyseur de syntaxe mathématique par méthode d'analyse syntaxique descendante récursive (Java)
Créer un SlackBot avec AWS lambda et API Gateway en Java
Essayez Spark Submit to EMR à l'aide du kit AWS SDK pour Java
A étudié comment appeler des services avec Watson SDK pour Java
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
Accéder au compartiment S3 à l'aide du chiffrement SSE-KMS dans l'environnement de rôle IAM EC2 (AWS SDK pour Java)
[Java1.8 +] Obtenez la date du jour × suivant avec LocalDate
Java, JS (jQuery) et Ajax. Obtenez une valeur spécifique de JSON.
Gérer la logique métier pour un ensemble d'entités dans une classe Java
Examiner la liste des polices disponibles dans AWS Lambda + Java
Tri d'une liste avec un tableau de type int comme élément (Java) (Comparator)
[Détails] Implémentation d'applications grand public avec Kinesis Client Library for Java
"Bundle install" entraîne de nombreuses différences git pour les fichiers gem
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Convertir un tableau de chaînes en une liste d'entiers en Java
Obtenez l'URL publique du fichier privé de Flickr en Java
Jusqu'à INSERT S3 objet dans EC2 DB avec Lambda @ java: AWS
Écraser le téléchargement du fichier avec le même nom avec BOX SDK (java)
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe