Google drive api 谷歌硬盘iOS SDK
我想检查一个文件夹是否存在,只有当它不存在时才创建一个新文件夹。但是,该文件夹可以是root或其他文件夹的子文件夹。那么,我如何在Unix上执行类似mkdirs的操作,在其中为它指定一个路径,并在该路径中创建所有目录 顺便说一句,SDK的使用有点令人沮丧,因为它似乎没有使用文件系统路径的方法。相反,您必须处理大量的查询和回调,这相当混乱。W 这是我用来创建文件夹的方法:Google drive api 谷歌硬盘iOS SDK,google-drive-api,Google Drive Api,我想检查一个文件夹是否存在,只有当它不存在时才创建一个新文件夹。但是,该文件夹可以是root或其他文件夹的子文件夹。那么,我如何在Unix上执行类似mkdirs的操作,在其中为它指定一个路径,并在该路径中创建所有目录 顺便说一句,SDK的使用有点令人沮丧,因为它似乎没有使用文件系统路径的方法。相反,您必须处理大量的查询和回调,这相当混乱。W 这是我用来创建文件夹的方法: - (void)createFolder:(NSString *)folderName completion:(void (^
- (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);
}
}];
}
没有简单的方法
*nix文件系统是分层的,而googledrive文件系统不是。UI和API将一些东西称为“文件夹”,但它们只不过是标记/标签
因此,如果您想要一个文件夹层次结构,您需要自己构建它(可能如您所想)。没有捷径
您可能会通过搜索所有文件夹来启动应用程序
q = "mimeType = 'application/vnd.google-apps.folder'"
我看到的一个问题是存在性检查和创建调用不是原子的。对createFolder:的一个调用可能会在另一个调用完成创建之前执行检查。这是正确的。市场名称“驱动器”的含义类似于硬盘驱动器,实际上是松散耦合的服务器群,有大量异步更新正在进行。如果你的应用程序采用了这种模式,那也不算太糟糕。任何试图将驱动器视为驱动器的应用程序都会失败。