如何检查文件夹是否存在于垃圾箱中或不在谷歌驱动器中? 参考:

问题描述

嗨,我一直在创建一个应用程序,它可以在 gdrive 中上传文件夹和文件,但我面临一个问题,当文件夹存在于 bin 中时,文件也存储在该文件夹中,我想避免的是检查是否该文件夹是否在 bin 中,如果是,则从那里删除

    public Task<GoogleDriveFileHolder> createFolderIfNotExist(final String folderName,@javax.annotation.Nullable final String parentFolderId) {
        return Tasks.call(mExecutor,new Callable<GoogleDriveFileHolder>() {
            @Override
            public GoogleDriveFileHolder call() throws Exception {
                GoogleDriveFileHolder googleDriveFileHolder = new GoogleDriveFileHolder();
                FileList result = mDriveService.files().list()
                        .setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = '" + false + "' ")
                        .setSpaces("drive")
                        .execute();


                if (result.getFiles().size() > 0) {
                    googleDriveFileHolder.setId(result.getFiles().get(0).getId());
                    googleDriveFileHolder.setName(result.getFiles().get(0).getName());
//                googleDriveFileHolder.setModifiedTime(result.getFiles().get(0).getCreatedTime().getValue());
//                googleDriveFileHolder.setSize(result.getFiles().get(0).getSize());

                    googleDriveFileHolder.setId(result.getFiles().get(0).getId());
                    return googleDriveFileHolder;

                } else {

                    List<String> root;
                    if (parentFolderId == null) {
                        root = Collections.singletonList("root");
                    } else {

                        root = Collections.singletonList(parentFolderId);
                    }
                    File Metadata = new File()
                            .setParents(root)
                            .setMimeType(DriveFolder.MIME_TYPE)
                            .setName(folderName);

                    File googleFile = mDriveService.files().create(Metadata).execute();
                    if (googleFile == null) {
                        throw new IOException("Null result when requesting file creation.");
                    }
                    googleDriveFileHolder.setId(googleFile.getId());
                    return googleDriveFileHolder;
                }
            }
        });
    }

这就是我正在做的,但是当我在 ".setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' 和 name = '" + folderName + "' 中添加 isTrashed 时出现错误,并且被删除 = '" + false + "' ")"

解决方法

我认为问题在于您将 false 括起来的单引号。你想提供一个布尔值,而不是一个字符串。

因此,您的问题可能会通过从以下位置更改查询来解决:

.setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = '" + false + "' ")

致:

.setQ("mimeType = '" + DriveFolder.MIME_TYPE + "' and name = '" + folderName + "' and trashed = false")

参考: