2014-02-14 168 views
0

我想检查一个文件夹是否存在,只有当它不存在时创建一个新文件夹。但是,该文件夹可能是根或其他文件夹的子文件夹。那么我怎么能在Unix上做类似mkdirs的东西,在那里给它一个路径并且它会创建路径中的所有目录?Google Drive iOS SDK

顺便说一句 - 该SDK有点令人沮丧,因为它似乎没有办法使用文件系统路径。相反,你必须进行大量的查询和回调,这很杂乱。 w^

这是我用它来创建一个文件夹:

- (void)createFolder:(NSString *)folderName completion:(void (^)(GTLDriveFile * file, NSError *))handler { 
    NSLog(@"createFolder:%@ completion:", folderName); 

    GTLDriveFile *folder = [GTLDriveFile object]; 
    folder.title = folderName; 
    folder.mimeType = @"application/vnd.google-apps.folder"; 

    GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folder uploadParameters:nil]; 
    [self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLDriveFile *updatedFile, NSError *error) { 
     if (error == nil) { 
      NSLog(@"Created folder"); 
      handler(updatedFile, nil); 
     } else { 
      NSLog(@"An error occurred: %@", error); 
      handler(updatedFile, error); 
     } 
    }]; 
} 

回答

0

有没有简单的方法。

* nix文件系统是分层的,而Google Drive文件系统不是。 UI和API引用的是“文件夹”,但这些仅仅是标签/标签。

所以,如果你想要一个文件夹层次结构,你需要自己建立它(可能你已经想通了)。没有捷径。

你可能会发现这样做的所有文件夹

q = "mimeType = 'application/vnd.google-apps.folder'" 

搜索开始你的应用程序是去

+0

好一个问题,我看到的是,存在检查和创建调用不是原子的方法。一次调用createFolder是可能的:在另一次调用完成创建之前执行检查。 – user3246173

+0

这是正确的。营销名称“Drive”暗示的内容与硬盘驱动器类似,实际上是松散耦合服务器的农场,其中有大量异步更新正在进行。如果你的应用拥抱这个范例,那也不错。任何试图将云端硬盘视为云端硬盘的应用都会遭到破坏。 – pinoyyid