2012-11-16 9 views
9

Esiste la possibilità di elencare tutti i file nel mio bucket Google Cloud Storage con l'SDK GAE? So che l'SDK Python supporta tale funzione, ma non riesco a trovare una funzione simile nel Java SDK.Ottieni l'elenco dei file in Cloud Storage (Java)

Se non disponibile, verrà aggiunto nelle versioni future dell'SDK Java?

risposta

5

È possibile utilizzare l'API JSON di Cloud Storage tramite client library. Dopo aver impostato le credenziali è possibile effettuare la chiamata in questo modo:

Storage storage = new Storage(httpTransport, jsonFactory, credential); 
ObjectsList list = storage.objects().list("bucket-name").execute(); 
for (Object obj : list.getItems()) { 
    //... 
} 

Si consiglia di utilizzare un AppIdentityCredential in questo caso, che permetterà il secchio per essere di proprietà di vostra applicazione, e non da un utente.

+1

Grazie molto Jason. Pensavo di poter usare una tale funzionalità senza un'altra libreria :(. Ma è ok, forse integrano queste funzioni in qualsiasi momento più tardi. – Eich

11

È anche possibile eseguire questa operazione utilizzando il Google Java Client Library (che sta sostituendo il Google Cloud Storage API)

GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance()); 
AppIdentityService appIdentity = AppIdentityServiceFactory.getAppIdentityService(); 

ListResult result = gcsService.list(appIdentity.getDefaultGcsBucketName(), ListOptions.DEFAULT); 
while (result.hasNext()){ 
    ListItem l = result.next(); 
    String name = l.getName(); 

    System.out.println("Name: " + name); 
} 

Se si desidera solo per scorrere una certa "directory", utilizzare la ListOptions costruttore

ListOptions.Builder b = new ListOptions.Builder(); 
b.setRecursive(true); 
b.setPrefix("directory"); 
... 

ListResult result = gcsService.list(appIdentity.getDefaultGcsBucketName(), b.build()); 
... 
Problemi correlati