2009-12-08 7 views
2

J'essaie de copier le répertoire "DATA_001" (et son contenu) dans le répertoire "CRYO". J'avais l'impression que je pouvais le faire en utilisant copyItemAtPath comme je le ferais pour un fichier? Est-ce la mauvaise façon de faire cela?Copier des répertoires avec 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"); 

gary

Répondre

9

Si vous copiez un répertoire tous les contenus sont récursive copyed, ce qui signifie que votre deuxième appel à copier est complètement superflu, vous pouvez simplement faire ceci:

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); 

Il est évident que Si vous ne voulez pas tout copier dans le répertoire, vous ne devez pas copier le répertoire lui-même, mais copier uniquement les entrées souhaitées.

Je dois noter que vous n'avez pas précisé que vous rencontriez des problèmes particuliers. Il y a évidemment un certain nombre de raisons pour lesquelles ce genre de chose peut échouer (permissions, problèmes, etc.), ce qui devrait être indiqué par la valeur de dError. Si vous posez cette question parce que vous avez obtenu des résultats inattendus, vous devez inclure plus de détails sur ce qui se passe et en quoi cela diffère de vos attentes.

+0

Merci Louis, le copy_Dir puis le copy_file étaient juste pour tester, c'est pourquoi j'ai inclus les deux. J'avais l'impression que mon code était erroné, ce qui ne semble pas être le cas de votre réponse. Je reviendrai et jetterai un meilleur coup d'oeil. Merci beaucoup encore. – fuzzygoat

+0

Son erreur de pilote en fait, ou plutôt moi étant un muppet. Ce que j'avais fait était de créer le répertoire "CRYO" pensant qu'il copierait les fichiers. DError était en effet la clé car il disait "fichier existe déjà" ... merci encore et désolé de perdre votre temps. – fuzzygoat

+0

Pour noobs, vous pourriez vouloir réviser ceci afin que 'fileManager' soit révisé avec' [NSFileManager defaultManager] '. – Volomike

Questions connexes