2009-12-08 82 views
2

我想將目錄「DATA_001」(及其內容)複製到目錄「CRYO」中。我的印象是,我可以使用copyItemAtPath來像這樣做一個文件嗎?這是做錯了嗎?使用copyItemAtPath複製目錄?

NSString *sourceDir = @"/Users/Fuzzygoat/Documents/DATA_001"; 
NSString *destDir = @"/Users/Fuzzygoat/Documents/CRYO"; 
NSString *sourceFile = @"/Users/Fuzzygoat/Documents/DATA_001/caroline.png"; 
NSString *destFile = @"/Users/Fuzzygoat/Documents/CRYO/cjg.png"; 

// COPY DIR 
success = [fileManager copyItemAtPath:sourceDir toPath:destDir error:&dError]; 
if(success != YES) NSLog(@"Error"); 

// COPY FILE 
success = [fileManager copyItemAtPath:sourceFile toPath:destFile error:&fError]; 
if(success != YES) NSLog(@"Error"); 

加里

回答

9

如果你複製一個目錄下的所有的內容是遞歸拷入,這意味着你的第二個電話來複制完全是多餘的,你可以這樣做:

NSString *sourceDir = @"/Users/Fuzzygoat/Documents/DATA_001"; 
NSString *destDir = @"/Users/Fuzzygoat/Documents/CRYO"; 

// COPY DIR 
success = [fileManager copyItemAtPath:sourceDir toPath:destDir error:&dError]; 
if(success != YES) NSLog(@"Error: %@", dError); 

顯然如果您不想複製目錄中的所有內容,則不應複製目錄本身,而只需複製所需的條目。

我應該注意,你沒有指定你有什麼特別的問題。顯然有很多原因會導致這類事情失敗(權限,問題等),這應該由dError的值來表示。如果你問這個問題是因爲你已經收到意想不到的結果,那麼你需要包含更多關於正在發生的事情以及它與預期不同的細節。

+0

謝謝路易,copy_Dir和copy_File只是爲了測試,所以這就是爲什麼我包括這兩個。我的印象是我的代碼錯了,你的答案似乎並非如此。我會回去看看。非常感謝。 – fuzzygoat 2009-12-08 16:11:01

+0

它實際上是飛行員的錯誤,或者說我是一個混蛋。我所做的是創建「CRYO」目錄,認爲它將複製文件。dError確實是關鍵,因爲它說「文件已存在」......再次感謝並遺憾浪費時間。 – fuzzygoat 2009-12-08 16:19:00

+0

對於noobs,您可能需要修改此操作,以便使用'[NSFileManager defaultManager]'修改'fileManager'。 – Volomike 2016-05-16 19:26:56