2014-02-14 227 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