2012-07-25 3 views
7

ottengo un elenco file con:trovare un percorso di un file specificato è ID

String q = "title contains '"+query+"' and trashed = false"; 
    FileList list = drive.files().list().setQ(q).execute(); 

Voglio trovare un percorso per ogni file corrispondente nel FileList.

Capisco che lo stesso file possa apparire in più cartelle.

Da quello che ho trovato, l'unico modo per creare un percorso per un file è quello di chiamare più volte:

drive.files().get(id).execute() 

e scegliere un ID dalla lista i genitori di quel file, salendo l'albero fino a quando il la radice è raggiunta.

Durante la navigazione dell'albero, ho potuto semplicemente scegliere il primo genitore o fare un "BFS" ​​finché non trovo la radice.

Questo è davvero l'unico modo per trovare un percorso per un file o ho perso qualche parte dell'API?

Se questo è l'unico modo, le cartelle possono avere anche più genitori, rendendo possibili i cicli?

(/ a/b/c =>/a/b/c/b/c/b/c ... se b ha genitori uno & c)?

risposta

4

Poiché le cartelle (che sono semplicemente file di Drive speciali con un tipo MIME specifico) possono avere più genitori, consiglierei l'approccio BFS e assicurarmi di gestire i loop.

Per la condizione di arresto, è possibile salvare l'ID della cartella radice che è possibile recuperare dall'attributo about.rootFolderId.

+0

Does the parentReference ha un campo titolo? In definitiva ho bisogno di finire con un elenco di elementi di percorso, non di ID di file. –

+0

Vedo, in questo caso, non è possibile utilizzare drive.parents.list. Aggiorno la risposta per riflettere questo. – Alain

+0

Alain, sai se è necessario utilizzare about.rootFolderId o è sufficiente una lista dei genitori vuota? Se about.rootFolderId è richiesto, può mai cambiare all'interno di un account o posso memorizzarlo in modo permanente? –