因为我正在使用google api的v3,所以我不想使用父和chidren列表我必须使用fileList,所以现在我想搜索特定文件夹中的文件列表。 所以有人可以建议我做什么?
以下是我用来搜索文件的代码:
private String searchFile(String mimeType,String fileName) throws IOException{
Drive driveService = getDriveService();
String fileId = null;
String pageToken = null;
do {
FileList result = driveService.files().list()
.setQ(mimeType)
.setSpaces("drive")
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
for(File f: result.getFiles()) {
System.out.printf("Found file: %s (%s)\n",
f.getName(), f.getId());
if(f.getName().equals(fileName)){
//fileFlag++;
fileId = f.getId();
}
}
pageToken = result.getNextPageToken();
} while (pageToken != null);
return fileId;
}
但是在这个方法中它给了我生成的所有我不想要的文件。我想创建一个FileList,它将文件放在一个特定的文件夹中。
答案 0 :(得分:1)
现在可以使用parents
中q
参数中的术语drives:list
来做到这一点。例如,如果要在ID为folder_id
的文件夹中查找所有电子表格,则可以使用以下q
参数(在我的示例中为python)进行查找:
q="mimeType='application/vnd.google-apps.spreadsheet' and parents in '{}'".format(folder_id)
请记住,您应该找出要在其中查找的文件夹文件的ID。您可以使用相同的drives:list
。
答案 1 :(得分:0)
尚不支持按文件夹名称搜索文件。这是google forum的要求,但到目前为止还没有。不过,请尝试查找Search for Files中提供的其他替代搜索过滤器。
要有创意。例如,确保某个文件夹中的文件包含一个唯一的关键字,然后您可以使用
进行查询 fullText contains 'my_unique_keyword'
答案 2 :(得分:0)
您可以使用此方法从Google云端硬盘搜索文件。
Files.List request = this.driveService.files().list();
noOfRecords = 100;
request.setPageSize(noOfRecords);
request.setPageToken(nextPageToken);
String searchQuery = "(name contains 'Hello')";
if (StringUtils.isNotBlank(searchQuery)) {
request.setQ(searchQuery);
}
request.execute();
答案 3 :(得分:0)
要在特定目录中搜索,您必须指定以下内容:
q : name = '2021' and mimeType = 'application/vnd.google-apps.folder' and '1fJ9TFZOe8G9PUMfC2Ts06sRnEPJQo7zG' in parents
此示例将名为“2021”的文件夹搜索到包含 1fJ9TFZOe8G9PUMfC2Ts06sRnEPJQo7zG 的文件夹中
就我而言,我正在用 C++ 编写代码,请求 url 为:
string url = "https://www.googleapis.com/drive/v3/files?q=name+%3d+%272021%27+and+mimeType+%3d+%27application/vnd.google-apps.folder%27+and+trashed+%3d+false+and+%271fJ9TFZOe8G9PUMfC2Ts06sRnEPJQo7zG%27+in+parents";