Le dernier paramètre de FSFindFolder
est un FSRef
, qui peut être converti en un CFURLRef
et à un NSURL
:
FSRef trashRef;
FSFindFolder(kUserDomain, kTrashFolderType, true, &trashRef);
CFURLRef urlRef = CFURLCreateFromFSRef(NULL, &trashRef);
NSURL *trashUrl = CFBridgingRelease(urlRef);
NSString *trashPath = [trashUrl path];
NSLog(@"trash folder: %@", trashPath);
(je l'ai omis de contrôle d'erreur pour l'amour de brev ité. Je suppose également que vous utilisez le comptage automatique de référence)
Maintenant, vous pouvez vérifier si un fichier donné est dans le dossier poubelle.
NSString *theFile = ...; // your file here
NSString *fileInTrash = [trashPath stringByAppendingPathComponent:theFile];
BOOL isInTrash = [[NSFileManager defaultManager] fileExistsAtPath:fileInTrash];
NSLog(@"is in trash: %d", isInTrash);
REMARQUE: Sous Mac OS X 10.8, FSFindFolder
est dépréciée et vous pouvez utiliser le code suivant pour trouver le dossier Corbeille:
NSString *trashPath = [NSSearchPathForDirectoriesInDomains(NSTrashDirectory, NSUserDomainMask, YES) lastObject];
Thanx. enfin je comprends le flux. en passant, j'ai une question, est-ce répertoire thrash pas toujours dans '[NSHomeDirectory() stringByAppendingPathComponent: @". Corbeille "];' – arufian
@arufian: Je * pense * que c'était un chemin différent dans les premières versions de Mac OS X, mais je ne suis pas sûr de ça. Donc, ces choses peuvent changer entre les versions, et il est juste plus sûr d'utiliser la fonction au lieu d'un chemin codé en dur. –
Le fichier peut être en volume externe (ex: clé USB). Dans ce cas, le répertoire de corbeille n'est pas dans le répertoire de base mais dans le volume. Vous pouvez utiliser [[NSFileManager defaultManager] URLForDirectory: NSTrashDirectory inDomain: NSUserDomainMask appropriéForURL: [NSURL fileURLWithPath: nomfichier] create: NO error: & error] 'pour obtenir le répertoire corbeille associé au fichier. –