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

Posted

技术标签:

【中文标题】如何检查文件夹是不是存在于垃圾箱中或不在谷歌驱动器中?【英文标题】:How to Check if the folder is present in trash or not in google drive?如何检查文件夹是否存在于垃圾箱中或不在谷歌驱动器中? 【发布时间】:2021-04-16 02:39:06 【问题描述】:

嗨,我一直在创建一个在 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 + "'")"

【问题讨论】:

【参考方案1】:

我认为问题在于您在 false 周围使用的单引号。你想提供一个布尔值,而不是一个字符串。

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

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

收件人:

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

参考:

File query terms

【讨论】:

谢谢@lamblichus,你能帮我清理垃圾吗? @Test 不客气。如果您在清除文件时遇到问题,请发布一个新问题。

以上是关于如何检查文件夹是不是存在于垃圾箱中或不在谷歌驱动器中?的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串是不是已经在数据库中或不在 Laravel 5.2 中

检查appdata中是不是存在文件而不在python代码中添加完整路径

如何从 C# 或 Javascript 检查文件是不是存在?

如何检查文件是不是存在,那么创建新文件的过程是啥? [复制]

SAF DocumentFile - 检查路径是不是存在而不在每个文件夹级别创建每个 DocumentFile

如何使用oozie检查文件是不是存在于HDFS位置?