2012-07-07 3 views

답변

3

쉬운 방법은 없습니다. Mac GUI에서 통일 된 휴지통을 제공하지만 휴지통 하나만있는 것은 아닙니다. 각 볼륨에는 별도의 휴지통이있을 수 있으며 볼륨은오고 갈 수 있습니다.

또한 폴더 내용의 크기를 계산하는 데 꽤 많은 시간이 걸릴 수 있으므로 매우 좋은 아이디어는 아닙니다.

당신이 정말하고 싶은 경우, CFURLGetFSRef()를 사용하여 FSRef들에 URL을 변환 whichInfo에 대한 kFSCatInfoVolume을 통과 FSGetCatalogInfo()를 사용하여 FSRef에서 볼륨 참조 번호를 얻을 -[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:] 같은 것을 사용하여 마운트 된 볼륨을 모두 열거 할 것, CFURLCreateFromFSRef()를 사용하여 URL에 결과 FSRef 변환 folderType에 대한 kTrashFolderType을 통과 FSFindFolder()를 사용하여 각 볼륨의 휴지통을 찾을 수는 keys 배열에 NSURLTotalFileAllocatedSizeKey을 전달 -[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:을 사용하여 해당 URL에 대한 디렉토리 열거를 생성 점점 그 열거를 통해 열거 각 항목의 NSURLTotalFileAllocatedSizeKey로을 입력하고 NSNumber-unsignedLongLongValue을 누적하십시오.

실제로 volume위한 kFSInvalidVolumeRefNum 및 인덱스 volumeIndex 들어, 1부터 시작을 전달 FSGetVolumeInfo()을 사용하여 볼륨을 열거하는 것이 더 쉬울 수있다. whichInfokFSVolInfoNone을 전달합니다. 인덱스를 증가시키고 nsvErr을 반환 할 때까지 반복합니다. 장점은 볼륨 참조 번호를 직접 제공하므로 URL에서 FSRef까지 볼륨 참조 번호로 이동할 필요가 없다는 것입니다. 단점은 이것이 하나 이상의 구식 API라는 것입니다. 그러나 위의 경우 FSFindFolder()을 대신 할 수 없으므로 이러한 API를 사용할 수밖에 없습니다.

어쨌든 볼륨을 열거하면 휴지통 폴더가 생기므로 휴지통 폴더가없는 볼륨을 만날 준비를해야합니다. 예를 들어, 네트워크 탑재 볼륨은 그렇지 않습니다.