当我检索我的GoogleDrive帐户的所有文件(和文件夹)时,我应该得到类似1500个列表元素的东西,但是我得到的回复超过3000。我查看了List,发现有些文件是2-3次。那是为什么?
以下是我用来检索文件的代码:
public async Task<List<File>> RetrieveAllFilesAsList(DriveService service, string query = null)
{
List<File> result = new List<File>();
FilesResource.ListRequest request = service.Files.List();
if (query != null)
{
request.Q = query;
}
do
{
try
{
FileList files = await request.ExecuteAsync();
result.AddRange(files.Items);
request.PageToken = files.NextPageToken;
}
catch (Exception e)
{
Console.WriteLine("An error occurred (from RetrieveAllFilesAsList): " + e.Message);
request.PageToken = null;
}
}
while (!String.IsNullOrEmpty(request.PageToken));
return result;
}
UPDATE1:
public async Task<List<File>> RetrieveAllFilesAsList(DriveService service, string query = null)
{
List<File> result = new List<File>();
FilesResource.ListRequest request = service.Files.List();
request.MaxResults = 1000;
if (query != null)
{
request.Q = query + " AND trashed=false";
}
else
{
request.Q = "trashed=false";
}
do
{
try
{
FileList files = await request.ExecuteAsync();
result.AddRange(files.Items);
request.PageToken = files.NextPageToken;
}
catch (Exception e)
{
Console.WriteLine("An error occurred (from RetrieveAllFilesAsList): " + e.Message);
request.PageToken = null;
}
}
while (!String.IsNullOrEmpty(request.PageToken));
int i;
for (i = 0; i < result.Count; i++ )
{
System.IO.File.AppendAllText(@"C:\Users\carl\Desktop\log.txt", result[i].Id + "\t" + result[i].Title + "\t" + result[i].ExplicitlyTrashed.ToString() + "\r\n");
}
// prints 3120 Lines
System.IO.File.AppendAllText(@"C:\Users\carl\Desktop\log.txt", "" + i + Environment.NewLine);
//Count = 3120
System.IO.File.AppendAllText(@"C:\Users\carl\Desktop\log.txt", "" + result.Count);
return result;
}
Word没能给我正确的行数,所以我在我的功能上做了。 但我可以在文件中找到FileId 2-3次。
答案 0 :(得分:0)
我还不能写评论,所以根据API 来自谷歌
&#34;注意:此方法默认返回所有文件。这包括结果中trashed = true的文件。使用trashed = false查询参数从结果中过滤这些参数。&#34;
那么你能检查一下其他api的url实际被调用了吗?看来你需要在List方法上放一些过滤器。