在Java中从Google Drive提取文件层次结构
我需要从谷歌硬盘读取文件夹、子文件夹和文件,并在我的文件系统中创建相应的层次结构(文件夹、子文件夹和文件),其中包含空文件(我只想保留文件名,不想保留文件数据)。就像我下载了所有的东西,但是只有空文件,而不必下载整个文件 我的目标是在本地建立完整的层次结构,以便与使用文件系统(文件夹、子文件夹和文件)作为输入的其他程序一起使用 我的问题是googledriveapi似乎基于id(标签),并且似乎没有层次结构/路径。我想要么列出所有文件并找到那些有父文件的文件,然后自己创建整个层次结构(这似乎不是一个好主意),要么从根文件开始,使用在Java中从Google Drive提取文件层次结构,java,google-drive-api,filesystems,hierarchy,Java,Google Drive Api,Filesystems,Hierarchy,我需要从谷歌硬盘读取文件夹、子文件夹和文件,并在我的文件系统中创建相应的层次结构(文件夹、子文件夹和文件),其中包含空文件(我只想保留文件名,不想保留文件数据)。就像我下载了所有的东西,但是只有空文件,而不必下载整个文件 我的目标是在本地建立完整的层次结构,以便与使用文件系统(文件夹、子文件夹和文件)作为输入的其他程序一起使用 我的问题是googledriveapi似乎基于id(标签),并且似乎没有层次结构/路径。我想要么列出所有文件并找到那些有父文件的文件,然后自己创建整个层次结构(这似乎不是
com.google.api.services.drive.drive.Children
从根文件作为父文件递归创建文件夹和文件(我对这个有问题,因为我似乎找不到它的maven依赖项)
你会有更好的想法吗?或者你知道是否已经有了解决方案吗?我在Google Drive文档中似乎找不到与此相关的任何内容(而且示例几乎从来没有正确的Maven依赖项)
无论如何,谢谢你抽出时间
例如:
在谷歌硬盘上
file1.parent is folder1
file2.parent is root
folder1.parent is root
在本地文件系统上应该是这样显示的(可能在临时文件夹中)
不要递归调用驱动器 实现所需功能的最佳方法是使用
files.list q=mimetype=application/vnd.google apps.folder
获取所有文件夹,然后使用每个文件夹的父信息构建内存层次结构
请记住,Google Drive不强制执行层次结构,因此一个文件可以有多个父级,祖父母也可以是子级
乙二醇
…是合法的不要重复调用驱动器 实现所需功能的最佳方法是使用
files.list q=mimetype=application/vnd.google apps.folder
获取所有文件夹,然后使用每个文件夹的父信息构建内存层次结构
请记住,Google Drive不强制执行层次结构,因此一个文件可以有多个父级,祖父母也可以是子级
乙二醇
…是合法的
< P>,您可能需要考虑使用可用范围,如请求全驱动器范围,因为您需要在用户驱动器中列出或重新组织文件,如在中讨论的。 请求格式:(https://www.googleapis.com/auth/drive)
另一方面,您也可以通过发送HTTP请求来检索您的文件列表,其中的所有可用参数都在.
中,您可能需要考虑使用可用范围,如请求完整驱动器范围,因为您需要与用户驱动程序中的文件进行列表或重排,如
中所讨论的。 请求格式:(https://www.googleapis.com/auth/drive)
另一方面,您也可以通过发送HTTP请求来检索文件列表,请求中提供了所有适用的参数。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>
然后使用文件夹ID而不是查询中的“根”递归地构建层次结构。您可以通过查看给定文件资源的mimeType属性来判断它是文件夹还是文件-文件夹的mime类型是application/vnd.google apps.folderjava快速入门指南- 它们使用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>
然后使用文件夹ID而不是查询中的“根”递归地构建层次结构。通过查看给定文件资源的mimeType属性,可以判断该资源是文件夹还是文件—文件夹的mime类型为application/vnd.google apps.folder
FileList result = service.files().list()
.setQ("'root' in parents and trashed = false")
.setPageSize(100)
.setFields("nextPageToken, files(id, name, mimeType)")
.execute();