2015-12-02 25 views
3

它看起來像可可有很多方法來移動文件/文件夾目錄到回收站:正確的對象移動到回收站

  1. [[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation]
  2. [ NSWorkspace sharedWorkspace] recycleURLs:]
  3. [的NSFileManager trashItemAtURL:]
  4. [的NSFileManager removeItemAtPath:]
  5. [的NSFileManager removeItemAtURL:]

通過閱讀此處的解釋或鏈接到官方Apple文檔,理解其差異將會很好。

此外,如果有人知道將文件/非空目錄移動到垃圾箱的普遍方式,那將很高興知道。

回答

4
  1. [[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation]

這被棄用,作爲OS X 10.11的,所以沒有在點使用它。

  • [[NSWorkspace sharedWorkspace] recycleURLs:]
  • 這可能是所需的一個。它是異步的,因此您的應用程序可以在文件被移至垃圾箱時繼續運行。

  • [的NSFileManager trashItemAtURL:]
  • 這類似於選項2,但它是同步的,並且僅處理一次一個文件。

  • [的NSFileManager removeItemAtPath:]
  • 這並不垃圾的文件,則刪除它永久地,並立即。

  • [的NSFileManager removeItemAtURL:]
  • 這就像選項4,不同的是使用一個文件:// URL,而不是一個路徑。當你已經有一個URL比路徑更方便時更方便。

    NSWorkspaceNSFileManager的參考頁相當好地涵蓋了這些方法之間的所有差異。


    這裏有一個快速的樣品,它採用recycleUrls:刪除一個名爲「垃圾郵件」用戶的桌面上的文件或文件夾:

    - (IBAction)deleteJunk:(id)sender { 
        NSFileManager *manager = [NSFileManager defaultManager]; 
        NSURL *url = [manager URLForDirectory:NSDesktopDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; // get Desktop folder 
        url = [url URLByAppendingPathComponent:@"Junk"]; // URL to a file or folder named "Junk" on the Desktop 
        NSArray *files = [NSArray arrayWithObject: url]; 
        [[NSWorkspace sharedWorkspace] recycleURLs:files completionHandler:^(NSDictionary *newURLs, NSError *error) { 
         if (error != nil) { 
          //do something about the error 
          NSLog(@"%@", error); 
         } 
         for (NSString *file in newURLs) { 
          NSLog(@"File %@ moved to %@", file, [newURLs objectForKey:file]); 
         } 
        }]; 
    } 
    
    +0

    1.我需要將在10.6以上的工作代碼。 2.解決方案編號2是否適用於文件和非空目錄?我也會檢查這些參考。你可以把一些示例代碼垃圾目錄? – Igor

    +0

    recycleUrls:在OS X 10.6及更高版本中可用。我在我的答案中添加了一些示例代碼。 –

    +0

    我收到「NSArray * files = @ [url];」這一行上的錯誤。谷歌搜索說,我需要最新的LLVM,我沒有。我在XCode 4.2上使用10.6。我如何重寫這一行?謝謝。 – Igor