Нахождение пути к файлу, указанному это идентификатор
-
11-12-2019 - |
Вопрос
Я получаю филиал с:
String q = "title contains '"+query+"' and trashed = false";
FileList list = drive.files().list().setQ(q).execute();
.
Я хочу найти путь к каждому подходящему файлу в филиале.
Я понимаю, что один и тот же файл может появиться в нескольких папках.
Из того, что я нашел, единственный способ создать путь для файла - это неоднократно звонить:
drive.files().get(id).execute()
.
, а затем выберите идентификатор из списка родителей этого файла, поднимаясь по дереву, пока корню не будет достигнут.
Во время навигации на дереве я мог просто выбрать первый родитель или сделать «BFS», пока не найду корне.
Это действительно единственный способ найти путь к файлу, или я пропустил какую-то часть API?
Если это единственный способ, могут ли папки с несколькими родителями тоже сделать возможным циклы?
(/ a / b / c=> / a / b / c / b / c / b / c ... Если b есть родители A & C)?
Решение
Поскольку папки (которые просто специальный файл диска с определенным типом MIME) могут иметь несколько родителей, я бы порекомендовал подход BFS и убедившись, что вы обрабатываете петли.
Для условий остановки вы можете сохранить идентификатор корневой папки, которую вы можете получить из О компании атрибут .