Encontrar um caminho para um Arquivo de dado é ID
-
11-12-2019 - |
Pergunta
Eu recebo um FileList com:
String q = "title contains '"+query+"' and trashed = false";
FileList list = drive.files().list().setQ(q).execute();
Eu quero encontrar um caminho para cada arquivo correspondente em FileList.
Eu entendo que o mesmo Arquivo pode aparecer em várias Pastas.
Pelo que tenho encontrado, o único caminho para criar um caminho para um Arquivo é para chamar repetidamente:
drive.files().get(id).execute()
e, em seguida, escolha um ID a partir do Arquivo de lista pais, andando até a árvore até a raiz é atingido.
Ao navegar na árvore, eu poderia simplesmente escolher o primeiro pai, ou fazer um "BFS" até eu encontrar a raiz.
Esta é realmente a única maneira de encontrar um caminho para um Arquivo, ou eu perdi alguma parte da API?
Se esta é a única maneira, pode Pastas têm vários pais, também, fazendo ciclos possível?
(/a/b/c => /a/b/c/b/c/b/c...se b tem pais & c)?
Solução
Desde pastas (que são simplesmente especiais Unidade de Arquivo com um determinado tipo de MIME) pode ter vários pais, eu recomendaria o BFS abordagem e certificar-se de você lidar com loops.
Para a condição de parada, você pode salvar a pasta raiz do ID que você pode recuperar do sobre.rootFolderId atributo.