코코아 앱에서 휴지통 크기를 int로 검색 할 수 있습니까? NSTask
올바른 방법이 있습니까?코코아 앱에서 휴지통 크기를 int로 검색
답변
쉬운 방법은 없습니다. 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()
을 사용하여 볼륨을 열거하는 것이 더 쉬울 수있다. whichInfo
에 kFSVolInfoNone
을 전달합니다. 인덱스를 증가시키고 nsvErr
을 반환 할 때까지 반복합니다. 장점은 볼륨 참조 번호를 직접 제공하므로 URL에서 FSRef
까지 볼륨 참조 번호로 이동할 필요가 없다는 것입니다. 단점은 이것이 하나 이상의 구식 API라는 것입니다. 그러나 위의 경우 FSFindFolder()
을 대신 할 수 없으므로 이러한 API를 사용할 수밖에 없습니다.
어쨌든 볼륨을 열거하면 휴지통 폴더가 생기므로 휴지통 폴더가없는 볼륨을 만날 준비를해야합니다. 예를 들어, 네트워크 탑재 볼륨은 그렇지 않습니다.
총 바이트 수. 예 : 휴지통 크기 : 25MB –