如何使用java从谷歌驱动器获取完整的文件路径

时间:2016-04-02 09:39:28

标签: google-drive-api

我是java开发人员。我使用google app client_id和client_secrect将google驱动器集成到我的应用程序中。 基于此client_id,我获得了用户的访问令牌。获取访问令牌后,我使用以下代码从驱动器获取文件和文件夹。

HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
System.out.println(inventoryIntegrationConfig.getAccessToken());

GoogleCredential credential = new GoogleCredential().setAccessToken(inventoryIntegrationConfig.getAccessToken());

Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setApplicationName("Akoonu")
.setHttpRequestInitializer(credential).build();

Files.List request = service.files().list();
.
.
.
.

我成功收到文件和文件夹下载网址和文件名。但我无法获得google drive的完整文件路径。例如,例如 BaseFolder / SubFolder1 / Subofsubfolder / TESTFILE.TXT。 这里我的预期输出是路径:BaseFolder / SubFolder1 / Subofsubfolder /

我无法从任何Drive类获取完整的文件路径。您能告诉我如何获取完整的文件路径吗? 我们需要使用哪种方法来获取完整的文件路径?

请在这里帮助我。

2 个答案:

答案 0 :(得分:1)

与传统文件系统不同,Google云端硬盘并不具备完整文件夹路径或绝对文件位置的概念。文件可以位于零个或多个文件夹中。敏捷可能与所有者" My Drive"没有直接联系。

因此,要回答您的问题,您需要file.get()您的文件。然后对parents中列出的每个文件夹ID执行相同的files.get()。继续接触任何父母,直到您到达My Drive根文件夹或没有父母的文件夹,然后是您的文件路径。

根据文件夹结构的复杂性,为用户获取文件/文件夹ID和父项只需执行files.list()可能更快,更有效。它需要的时间比获取请求的时间长,但一旦完成,您应该拥有确定文件夹路径所需的所有数据。

答案 1 :(得分:0)

没有方法可以调用/获取完整的文件路径。首先,让我们清理一些有关文件完整路径的详细信息。停止考虑文件夹和路径,并考虑像label(父和集合)这样的术语。

  

<强>家长

     

包含该文件的父文件夹的ID。   如果未将其指定为创建请求的一部分,则该文件将直接放在“我的云端硬盘”文件夹中。更新请求必须使用 addParents removeParents 参数来修改值。

一个文件可以有多个父文件,每个父文件又可以有一个或多个父/标签/集合。要获取&#34;文件路径&#34;,我们需要以递归方式获取其父级的父级。根据pinoyyid回答的下面的SO票,&#34;请记住,一个文件可以有多个父项,每个父项也可以有多个父项,因此一个文件可以有多个路径。&#34;

使用Google云端硬盘,忽略条款路径/文件夹,而不仅仅是文件的属性。

这是一个http://www.w3schools.com/tags/tag_input.asp,它创建了有关获取文件的父级/集合以及相关Apps Script的变通方法以获取更多信息。我希望它有所帮助。