You can list all of the objects uploaded under a given prefix by setting the pageSize. If the pageSize is set lower than the total file size available, A single `Storage.list` call only returns a subset of all the files. To list all the files with multiple calls, the user can use the nextToken from the previous call response. This will list all public files: ```java StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .build(); Amplify.Storage.list( "", options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getKey()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); ); ``` ```kotlin val options = StoragePagedListOptions.builder() .setPageSize(1000) .build() Amplify.Storage.list("", options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.key}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) } ) ``` ```kotlin val options = StoragePagedListOptions.builder() .setPageSize(1000) .build() try { val result = Amplify.Storage.list("", options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}") } catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error) } ``` ```java StoragePagedListOptions options = StoragePagedListOptions.builder() .setPageSize(1000) .build(); RxAmplify.Storage.list("", options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getKey()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); ); ``` Note: The range of pageSize can be from 1 - 1000. You can also list private or protected files by passing options. For example, to list all protected files owned by a user identified by the ID `otherUserID`: ```java StoragePagedListOptions options = StoragePagedListOptions.builder() .accessLevel(StorageAccessLevel.PROTECTED) .targetIdentityId("otherUserID") .setPageSize(1000) .build(); Amplify.Storage.list( "", options, result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getKey()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); ); ``` ```kotlin val options = StoragePagedListOptions.builder() .accessLevel(StorageAccessLevel.PROTECTED) .targetIdentityId("otherUserID") .setPageSize(1000) .build() Amplify.Storage.list("", options, { result -> result.items.forEach { item -> Log.i("MyAmplifyApp", "Item: ${item.key}") } Log.i("MyAmplifyApp", "Next Token: ${result.nextToken}") }, { Log.e("MyAmplifyApp", "List failure", it) } ) ``` ```kotlin val options = StoragePagedListOptions.builder() .accessLevel(StorageAccessLevel.PROTECTED) .targetIdentityId("otherUserID") .setPageSize(1000) .build() try { val result = Amplify.Storage.list("", options) result.items.forEach { Log.i("MyAmplifyApp", "Item: $it") } Log.i("MyAmplifyApp", "next token: ${result.nextToken}") } catch (error: StorageException) { Log.e("MyAmplifyApp", "List failure", error) } ``` ```java StoragePagedListOptions options = StoragePagedListOptions.builder() .accessLevel(StorageAccessLevel.PROTECTED) .targetIdentityId("otherUserID") .setPageSize(1000) .build(); RxAmplify.Storage.list("", options) .subscribe( result -> { for (StorageItem item : result.getItems()) { Log.i("MyAmplifyApp", "Item: " + item.getKey()); } Log.i("MyAmplifyApp", "Next Token: " + result.getNextToken()); }, error -> Log.e("MyAmplifyApp", "List failure", error); ); ```