2012-07-25 48 views
7

我得到一個文件列表有:找到解決文件的路徑給它的ID

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

我想找到文件列表中的每個匹配的文件的路徑。

據我所知,相同的文件可以出現在多個文件夾中。

從我發現,創建一個路徑文件的唯一方法就是反覆撥打:

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

,然後選擇從該文件的父母列表中的ID,走了樹,直到達到根目錄。

在導航樹時,我可以選擇第一個父項,或者執行「BFS」,直到找到根。

這真的是唯一的方法來找到一個文件的路徑,或者我錯過了API的一部分?

如果這是唯一的方法,那麼文件夾可以有多個父母嗎? (/ a/b/c =>/a/b/c/b/c/b/c ...如果b有父母& c)?

回答

4

由於文件夾(只是特定的MIME類型的特殊驅動器文件)可以有多個父母,所以我會推薦BFS方法並確保處理循環。

對於停止條件,您可以保存可從about.rootFolderId屬性檢索的根文件夾ID。

+0

父引用是否有標題字段?最終,我需要結束一個路徑元素列表,而不是文件ID。 – 2012-07-25 22:05:39

+0

我看到,在這種情況下,你不能使用drive.parents.list。我更新答案以反映這一點。 – Alain 2012-07-25 22:41:43

+0

Alain,你知道是否有必要使用about.rootFolderId,或者是一個空的父母列表是否足夠?如果需要about.rootFolderId,可以在帳戶內更改,還是可以永久緩存? – 2012-08-02 22:25:33

相關問題