gpt4 book ai didi

java - 用 Java 从 Google Drive 中提取文件层次结构

转载 作者:行者123 更新时间:2023-12-01 21:35:43 24 4
gpt4 key购买 nike

我需要从 Google 云端硬盘读取文件夹、子文件夹和文件,并在文件系统中使用空文件创建相应的层次结构(文件夹、子文件夹和文件)(我只想保留名称,而不是数据)文件的数量)。几乎就像我下载了所有内容,但只有空文件,而不必下载整个文件。

我的目标是在本地拥有完整的层次结构,以便与使用文件系统(文件夹、子文件夹和文件)作为输入的其他程序一起使用。

我的问题是 Google Drive API 似乎基于 ID(标签),并且似乎没有层次结构/路径。我想要么列出所有文件并找到那些有父级的文件,然后自己创建整个层次结构(似乎不是一个好主意),要么从根文件开始并使用 com.google.api.services.drive.Drive.Children从以根为父级的文件递归创建我的文件夹和文件(我对此有问题,因为我似乎找不到它的 Maven 依赖项)。

您有更好的想法吗?或者您知道是否已经存在解决方案?我似乎无法在 Google Drive 文档中找到与此相关的任何内容(并且示例几乎从来没有正确的 Maven 依赖项)。

无论如何,感谢您抽出时间。

示例:在 Google 云端硬盘上

file1.parent is folder1
file2.parent is root
folder1.parent is root

在本地文件系统上应如下所示(可能位于临时文件夹中)。

root/
folder1/
file1
file2

最佳答案

java 快速入门指南 - https://developers.google.com/drive/v3/web/quickstart/java .

他们使用 gradle。如果您更喜欢 Maven,请使用以下依赖项:

<dependencies>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-drive</artifactId>
<version>v3-rev22-1.21.0</version>
</dependency>

<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client</artifactId>
<version>1.21.0</version>
</dependency>

<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.21.0</version>
</dependency>

</dependencies>

这将为您提供工作示例(我花了 10 分钟来运行)。现在让我们来讨论层次结构问题。您必须使用 files.list 方法并指定搜索查询。支持的查询参数列表位于此处 - https://developers.google.com/drive/v3/web/search-parameters .

因此,您可以像这样从根开始:

    FileList result = service.files().list()
.setQ("'root' in parents and trashed = false")
.setPageSize(100)
.setFields("nextPageToken, files(id, name, mimeType)")
.execute();

然后通过在查询中使用文件夹 ID 而不是“根”来递归构建层次结构。您可以通过查看其 mimeType 属性来判断给定文件资源是文件夹还是文件 - 文件夹的 mime 类型为 application/vnd.google-apps.folder

关于java - 用 Java 从 Google Drive 中提取文件层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com