我正在寻找一种优雅的方法,使用C#Google Drive API V3从根文件夹开始获取文件夹层次结构。
目前,您可以通过以下方式获取根文件夹及其父文件夹:
var getRequest = driveService.Files.Get("root");
getRequest.Fields = "parents";
var file = getRequest.Execute();
但我正在寻找一种获取孩子而不是父母的方法,因此我可以递归查看文件结构。
设置
getRequest.Fields = 'children'
不是有效的字段选项。 最佳答案
递归地获取子项是获取整个层次结构的非常耗时的方法。更好的方法是运行查询以在单个GET中获取所有文件夹(如果您有超过1,000个文件夹,则可能需要多个文件夹),然后遍历其父属性以在内存中建立层次结构。请记住,(afaik)没有什么可以阻止文件夹层次结构循环的,因此,folder1拥有folder2拥有folder2拥有folder1,因此无论您采用哪种策略,都要检查自己是否处于循环状态。
如果您是GDrive的新手,那么很早就意识到文件夹只是标签,而不是容器是很重要的。因此,具有多个父级的循环关系和文件是很正常的。他们最初被称为“收藏集”,但后来被重命名为“文件夹”,以安抚那些无法与标签打交道的社区成员。