Get list of files and folders from specific Amazon S3 directory

Every item stored in Amazon S3 is object, not file, not folder, but object. This often confuses new programmers, because they used to deal with folders and files in file system. Today I’ll show how to retrieve a list of objects from specific folder(object) using Java.

Lets say you have S3 bucket and you storing a folder with many files and other folders inside it. Now you want to get a list of all objects inside that specific folder. This often needed if you want to copy some folder in S3 from one place to another including its content.

public List<String> getObjectslistFromFolder(String bucketName, String folderKey) {
  
 ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
                                            .withBucketName(bucketName)
                                            .withPrefix(folderKey + "/");
 
 List<String> keys = new ArrayList<>();
 
 ObjectListing objects = s3Client.listObjects(listObjectsRequest);
 
 for (;;) {
     List<S3ObjectSummary> summaries = objects.getObjectSummaries();
     if (summaries.size() < 1) {
         break;
     }

  summaries.forEach(s -> keys.add(s.getKey()));
  objects = s3Client.listNextBatchOfObjects(objects);
 }
 
 return keys;
}

So This method will return the complete list of all the objects inside given S3 directory.

If you code in Python then read this post: Get List of Files in Specific AWS Bucket

2 COMMENTS

  1. […] Este comportamiento sería de esperar si realmente se crea la «carpeta vacía» en la consola, ya que la acción realmente crea un objeto vacío con la clave path/to/my/folder/ por lo que la consola tiene un marcador de posición. Hiciste que, si bien la prueba? No me crea ninguna carpeta vacía. De hecho, todos los archivos son subidos por la aplicación que utiliza la estructura de la carpeta me informó como prefijo para el archivo de clave. Es posible que desee probar un GET en el aparente objeto con una barra diagonal, entonces, porque si no crear una carpeta y se hizo uso de la / delimitador withDelimiter("/") cuando listado de los objetos, esto significa que de hecho tienen un objeto denominado con una barra diagonal, posiblemente debido a un error en el código que ha creado uno de esa manera. Un objeto es probable que sea invisible en la consola. Este es el código: codeflex.co/get-lista-de-los-objetos-de-s3-directorio […]

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.