2012-07-25 17 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

相关问题