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)?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top