FSFindFolder用于在垃圾箱中查找文件/文件夹

时间:2012-10-12 06:44:57

标签: objective-c c macos-carbon

如何确定垃圾箱中的文件/文件夹有问题。 互联网上有一些解决方案,其中之一就是FSFindFolder。 可以使用这样的东西:

FSFindFolder(kUserDomain, kTrashFolderType, true, &trashRef);

但仍然不知道如何使用此方法传递我想要确定的文件路径

1 个答案:

答案 0 :(得分:4)

FSFindFolder的最后一个参数是FSRef,可以转换为CFURLRefNSURL

FSRef trashRef;
FSFindFolder(kUserDomain, kTrashFolderType, true, &trashRef);
CFURLRef urlRef = CFURLCreateFromFSRef(NULL, &trashRef);
NSURL *trashUrl = CFBridgingRelease(urlRef);
NSString *trashPath = [trashUrl path];
NSLog(@"trash folder: %@", trashPath);

(为了简洁,我省略了错误检查。我还假设您使用自动引用计数。)

现在您可以检查给定文件是否在垃圾箱文件夹中:

NSString *theFile = ...; // your file here
NSString *fileInTrash = [trashPath stringByAppendingPathComponent:theFile];
BOOL isInTrash = [[NSFileManager defaultManager] fileExistsAtPath:fileInTrash];
NSLog(@"is in trash: %d", isInTrash);

注意:在Mac OS X 10.8上,不推荐使用FSFindFolder,您可以使用以下代码查找垃圾箱文件夹:

NSString *trashPath = [NSSearchPathForDirectoriesInDomains(NSTrashDirectory, NSUserDomainMask, YES) lastObject];