web-dev-qa-db-fra.com

Meilleure façon de copier ou de déplacer des fichiers avec Objective-C?

Je me demandais, y a-t-il une meilleure pratique pour écrire un programme OSX qui copie ou déplace un fichier d'un endroit à un autre?

  • y a-t-il une méthode NSSomande que je peux appeler?
  • Dois-je travailler avec des flux d'entrée/sortie?
  • Ou est-ce que la meilleure façon de s'appuyer peut-être sur des commandes qui transmettent le Finder?

Question bonus: Comment puis-je obtenir des pourcentages à la "copie 12% complète" avec l'une de ces méthodes?

Merci pour ton aide!

32
winsmith

Nsfilemanager et Nsworkspace ont à la fois des méthodes pour déplacer, copier et supprimer des fichiers. Habituellement, vous utiliseriez NsfileManager depuis sa fonctionnalité avec:

if ( [[NSFileManager defaultManager] isReadableFileAtPath:source] )
    [[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:nil];

Cependant, Nsworkspace peut facilement déplacer des fichiers vers la corbeille, que NsfileManager ne peut pas faire.

[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:foldername destination:@"" files:filenamesArray tag:&tag];

Vérifiez la documentation pour une description plus complète des deux classes. (- nsfilemanager , Nsworkspace )

53
Marc Charbonneau

[[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dstPath error:&error]

Voici le lien vers la référence de la classe:

http://developer.apple.com/documentation/cocoa/reference/foundation/classes/nsfilemanager_class/reference/reference.html#//apple_ref/occ/instm/nsfileManager/copyitematPathHtopathherror : Englisons

13
Ed Marty

Vous pouvez également utiliser FSCyObjectAsync . Vous pouvez afficher la progression de la copie de fichier et vous pouvez également annuler la copie de fichier à l'aide de FSCyObjectAsync ().
Jetez un coup d'œil à cela POST .

fscyObjecttasync est obsolète dans OS X V10.8

copyfile (3) est alternative pour FSCyObjecttasync. ICI est exemple de copyfile (3) avec le rappel de progression.

5
Parag Bafna