2012-07-22 1 views
5

라이온스의 여유 공간을 결정하기 위해 정보 입력 패널을 사용하는 이유는 무엇입니까? Apple이보고하는 것과 동일한 사용 가능한 공간을 얻으려고 노력한 모든 코드가 실패했습니다. Quick Look조차도 정보 입수와 동일한 공간을 표시하지 않습니다. 이것은 많은 파일을 삭제하고 사용 가능한 공간을 읽으려는 경우에 발생합니다. 내가 NSFileManager를 사용할 때Cocoa apis에서 여유 공간에 대한 잘못된 값을보고하는 경우 어떻게해야합니까?

Incorrect free space on Lion

은 -> buffer.f_bsize * 버퍼 -> NSURLVolumeAvailableCapacityKey 내가 42,918,273,024 바이트

내가 statfs를 사용

를 얻을 -> NSFileSystemFreeSize은 내가 NSURL을 사용할 때 42,918,273,024 바이트

수 .f_bfree 내가 43180417024 바이트를 얻는다

statfs는 Quick Look과 비슷한 결과를 얻지 만 정보 입수는 어떻게합니까?

+0

기본 2와 기본 10 계산의 차이가있을 수 있습니다. 나는 사과가 SL의 저장 공간 시스템에 대해 10을 기본으로 변경했다고 생각했지만, 그렇지 않은 이유는 그다지 멀었을 것입니다. 스왑, 캐시 및 스크린 샷 때문에 약간 다를 수 있습니다. –

+0

둘 사이의 변환 공식이 기억 나지 않습니다. –

+1

Mountain Lion에서 NSByteCountFormatter를 추가했는데 도움이 될 것입니다. https://developer.apple.com/library/mac///#/library/mac/documentation/Foundation/Reference/NSByteCountFormatter_Class/Reference/Reference.html을 참조하십시오. –

답변

1

로컬 Time Machine 스냅 샷 백업의 결과가 표시됩니다. OS X 라이온에서

타임 머신을 만들고, 수정하거나 내부에 삭제 파일의 복사본을 유지 "지역 스냅 샷"이라는 새로운 기능이 포함되어 OS X Lion: About Time Machine's "local snapshots" on portable Macs - 다음의 인용은 다음 Apple 지원 기사에서입니다 디스크. 로컬 스냅 샷은 외부 디스크 백업 디스크 또는 실수로 파일을 삭제할 때 "안전망"을 제공하는 정규 Time Machine 백업 (외부 디스크 또는 Time Capsule에 저장 됨)을 보완합니다.

기사는 말로 종료 :

참고 : 당신은 디스크 유틸리티, 파인더 사이에 사용 가능한 공간 통계의 차이를 발견하고, 정보 사찰을받을 수 있습니다. 이것은 이며 무시해도됩니다. Finder는 로컬 스냅 샷이 필요한 경우 디스크 공간을 포기하기 때문에 로컬 스냅 샷을 고려하지 않고 디스크에 사용 가능한 공간을 표시합니다.

그것은 당신이 디스크가 아닌 지역 Time Machine 백업을 제거하여 사용할 수있는 공간에 진정한 여유 공간 값을 제공 시도 가능한 디스크 공간을 측정하는 모든 프로그래밍 방법처럼 보인다.df과 같은 명령 줄 도구가 로컬 Time Machine 백업 중 하나를 인식하는지 의심 스럽습니다.

0

이것은 실제 API가 아닌 약간의 임시 해결책이지만 good old unix 명령 df -H은 '정보 얻기'패널에서와 동일한 정보를 얻을 수 있습니다. 디스크 줄을 선택하면됩니다. 출력을 파싱합니다.

df 프로그램에는 탐색 할 수있는 다른 많은 옵션이 있습니다. 이 특별한 경우에 -H 스위치는 프로그램이 사람이 읽을 수있는 형식으로 숫자를 뱉어 내고 기본 10 크기를 사용하도록 지시합니다.

은 앱 내에서 명령 줄을 실행하는 방법에 여기 봐, 그리고 당신의 프로그램 내부의 출력을 얻을 : 나는 모두 df 및 정보 입수 패널의 토대가 될 가능성이 매우 높다 있다고 생각 Execute a terminal command from a Cocoa app

을 같은 것.

관련 문제