我正在使用Google Apps Drive APIs 3.0
。此API已弃用,但处于维护阶段。
我想查找Google云端硬盘文档的路径。 例如测试/ TEST1 / TEST2 / TEST3 / testDoc.txt
截至目前,我能够检索所有文档,但没有目录路径。 我想展示驱动文档的整个路径。
我相信,没有API可以检索整个父路径或父链接。
现在不推荐使用DocumentListEntry的getFolders()
方法无法显示文件夹路径。
我调查并发现还有一个方法getParentsLink()
只显示直接的父链接。它返回List。我无法重新迭代以再次找到其父链接。
public class MyClass {
private static final String DOCS_BASE_URL = "https://docs.google.com/feeds/";
private static final String DOCS_URL = "/private/full";
private static final String adminEmail = "admin@mytest.com";
private static final String password = "password";
private static final String projectKey = "MyProject";
public static void main(String[] args) {
try {
URL queryUrl = new URL(DOCS_BASE_URL + adminEmail + DOCS_URL);
DocumentQuery docQry = new DocumentQuery(queryUrl);
DocsService docService = new DocsService(projectKey);
docService.setUserCredentials(adminEmail, password);
docQry.setStringCustomParameter("showfolders", "true");
DocumentListFeed docFeed = docService.query(docQry, DocumentListFeed.class);
Iterator<DocumentListEntry> documentEntry = docFeed.getEntries().iterator();
while (documentEntry.hasNext()) {
DocumentListEntry docsEntry = documentEntry.next();
// Complex Logic to find whole directory path.(that I don't understand :P)
}
} catch (Exception exception) {
System.out.println("Error Occured " + exception.getMessage());
}
}
}
欢迎任何意见。 感谢。
答案 0 :(得分:0)
要解决这个问题,你需要停止思考文件夹和路径,并考虑标签(也就是父母,也就是收藏品)。文件可以(可选)具有一个或多个标签/父母/集合。每个父母可以依次拥有一个或多个标签/父母/集合。因此,要获取文件的“路径”,您需要以递归方式获取其父级的父级。请记住,文件可以有多个父项,每个父项也可以有多个父项,因此文件可以有多个路径。
以您的示例“test / test1 / test2 / test3 / testDoc.txt”为例,假设您拥有testDoc.txt的ID,您可以获取它的DocumentListEntry,并调用getParentLinks,如果每个DocumentListEntry的URL都返回一个列表它的父母,在你的情况下只是“test3”。获取test3的DocumentListEntry,并重复以获取test2等。
这可能听起来很复杂,但是一旦你接受了你正在调用文件夹的东西不是文件的容器,而只是文件的属性,那就更有意义了。