2

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

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

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

4

1 回答 1

4

的最后一个参数FSFindFolder是 a FSRef,可以转换为 aCFURLRef和 a 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);

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

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

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];
于 2012-10-12T18:08:16.380 回答