我正在使用 google API v3 检查存在的文件夹。如果文件夹不存在,则创建新文件夹。这是我创建文件夹的代码
private void createFolderInDrive() throws IOException {
boolean existed = checkExistedFolder("MyFolder");
if (existed = false) {
File fileMetadata = new File();
fileMetadata.setName("MyFolder");
fileMetadata.setMimeType("application/vnd.google-apps.folder");
File file = mService.files().create(fileMetadata)
.setFields("id")
.execute();
System.out.println("Folder ID: " + file.getId());
Log.e(this.toString(), "Folder Created with ID:" + file.getId());
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(),
"Folder is existed already", Toast.LENGTH_SHORT).show();
}
}
这里是检查存在文件的代码
private boolean checkExistedFolder(String folderName) {
//File file = null;
boolean existedFolder = true;
// check if the folder exists already
try {
//String query = "mimeType='application/vnd.google-apps.folder' and trashed=false and title='" + "Evacuation Kit" + "'";
String query = "mimeType='application/vnd.google-apps.folder' and trashed=false and name='Evacuation Kit'";
// add parent param to the query if needed
//if (parentId != null) {
//query = query + " and '" + parentId + "' in parents";
// }
Drive.Files.List request = mService.files().list().setQ(query);
FileList fileList = request.execute();
if (fileList.getFiles().size() == 0 ) {
// file = fileList.getFiles().get(0);
existedFolder = false;
}
} catch (IOException e) {
e.printStackTrace();
}
return existedFolder;
fileList.getFiles().size() 一直返回 3,即使 g 盘上没有文件夹。你们能告诉我我哪里做错了吗?
最佳答案
在您显示的代码中,checkExistedFolder
始终在寻找名称“Evacuation Kit”而不使用参数 folderName
。也许这是您总是从 fileList.getFiles().size()
中得到 3 的主要原因。
在 if (existed = false)
中也有一个赋值,你应该使用 if ( false == existed )
-使用左边的静态值比较的一侧有助于避免此类错误-,或 if (!existed)
。请注意,调用 Files:list 时检查 nextPageToken 很重要,以检查是否有更多页面可以查找该文件。在这里查看更多 https://developers.google.com/drive/api/v3/reference/files/list和 Create folder if it does not exist in the Google Drive
关于java - Google API v3 通过传递文件夹名称检查存在的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48308679/