2012-10-12 1 views

답변

4

FSFindFolder의 마지막 매개 변수는이 방법을 사용하여 결정하고자하는 파일의 경로를 전달하는 방법을 모르는이 같은 것을 사용할 수 있습니다 CFURLRef과로 변환 할 수 FSRef하는 NSURL :

(나는 brev의 위해 검사 오류를 생략 한
FSRef trashRef; 
FSFindFolder(kUserDomain, kTrashFolderType, true, &trashRef); 
CFURLRef urlRef = CFURLCreateFromFSRef(NULL, &trashRef); 
NSURL *trashUrl = CFBridgingRelease(urlRef); 
NSString *trashPath = [trashUrl path]; 
NSLog(@"trash folder: %@", trashPath); 

ity. 나는 또한 당신이 자동 참조 카운팅을 사용하는 것으로 가정 한) 이제

해당 파일이 휴지통 폴더에있는 경우 당신이 확인할 수 있습니다.

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]; 
+0

고를 수 있습니다. 마침내 나는 흐름을 이해한다. 그건 그렇고, 하나의 질문이 있는데, 그것은 항상 [NSHomeDirectory (stringByAppendingPathComponent : @ ". 휴지통]];' – arufian

+0

@arufian : 나는 * 첫 번째 버전의 Mac에서는 다른 경로라고 생각합니다. OS X,하지만 그것에 대해 잘 모르겠습니다. 따라서 이러한 것들은 릴리즈간에 변경 될 수 있으며 하드 코딩 된 경로 대신 함수를 사용하는 것이 안전합니다. –

+3

파일이 외부 볼륨 (예 : USB 메모리)에있을 수 있습니다. 이 경우 휴지통 디렉토리는 홈 디렉토리가 아니라 볼륨에 있습니다. 파일과 관련된 휴지통 디렉토리를 얻으려면'[[NSFileManager defaultManager] URLForDirectory : NSTrashDirectory inDomain : NSUserDomainMask appropriateForURL : [NSURL fileURLWithPath : filename] create : NO error : & error]'명령을 사용할 수 있습니다. –

관련 문제