java - Google API v3 通过传递文件夹名称检查存在的文件夹

标签 java android google-drive-api google-api-java-client

我正在使用 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/listCreate folder if it does not exist in the Google Drive

关于java - Google API v3 通过传递文件夹名称检查存在的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48308679/

相关文章:

java - 如何在 tomcat 中设置 org.apache.tomcat.util.digester.EnvironmentPropertySource

java - 如何读取textView末尾的任意大数字?

android - webview 不能在果冻 bean 上使用 ajax jquery

android - Android HttpURLConnection.setChunkedStreamingMode() 的默认 block 长度?

python - 如何使用 Google Drive API 一次删除多个文件

java - Android - getResources().getIdentifier() 找不到资源

java - Android:服务完成任务后如何启用按钮?

java - 调查 Java JIT 其他内存

node.js - 寻找为不同存储提供者提供统一文件API的node.js模块

java - Google Drive API 抛出 userRateLimitExceeded 然后 dailyLimitExceededUnreg