我从谷歌驱动器获取文件,就像那样。 文件夹的结果。好的,
我有列出结果,因此我想查找结果(i)是否包含带有application / vnd.google-apps.folder mime类型的儿童。
换句话说,检查的方法是:如果当前文件夹包含子文件夹,则返回true。 owherwise返回false;
我在google App引擎中使用它。
我该怎么做?
public void getAllFiles(String id, Drive service) throws IOException{
String query="'"+id + "'"+ " in parents and trashed=false and mimeType=application/vnd.google-apps.folder'";
FileList files = service.files().list().setQ(query).execute();
List<File> result = new ArrayList<File>();
Files.List request = service.files().list();
do {
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
} while (request.getPageToken() != null && request.getPageToken().length() > 0);
}
我不想要创建其他请求(新子请求到每个节点)以查看它是否有子节点。类似的东西:
for (File file : result) {
query = "'" + file.getId() + "'" + " in parents and trashed=false and mimeType='application/vnd.google-apps.folder'";
FileList fileChild = service.files().list().setQ(query).execute();
List<File> res = new ArrayList<File>();
Files.List req = service.files().list();
do {
res.addAll(fileChild.getItems());
req.setPageToken(fileChild.getNextPageToken());
} while (req.getPageToken() != null && req.getPageToken().length() > 0);
RemoteFolder remFolder = new RemoteFolder();
remFolder.setFile(file);
if(res.size()>0){
remFolder.setChildrenable(true);
log.info("folder named "+file.getTitle() + " have children folders count: "+ res.size());
}
folderList.add(remFolder);
}
我想优化我的代码。
答案 0 :(得分:1)
您必须为每个节点发出另一个请求。如果你想避免太多的电话使用memcached。