2010-05-01 2 views
1

파일을 여는 AudioFileOpenURL 함수가 있습니다. AudioFileReadPackets을 사용하면 해당 파일에 액세스하여 패킷을 읽을 수 있습니다. 하지만 내 두뇌에 갇혀있는 한 가지는 : AudioFileOpenURL이 실제로 전체 몬스터를 메모리에로드합니까? 아니면 가벼운 작업입니까?"파일 열기"는 완전히 파일을 메모리에로드한다는 의미입니까?

테라 바이트 단위의 메모리를 모두 차지하지 않고도 특정 부분의 파일에서 데이터를 읽을 수 있습니까?

+0

예 아니오. 예. :) –

답변

2

AudioFileOpenURL은 실제로 전체 몬스터를 메모리에로드합니까?

아니요, 파일 포인터 만 가져옵니다.

가볍습니다.

상당히 가볍습니다. 파일 시스템 조회가 필요합니다.

전체 테라 바이트의 메모리를 사용하지 않고도 특정 부분에서만 파일의 데이터를 읽을 수 있습니까?

예, 버퍼 (또는 AudioFileReadBytes)로 읽어 다음, 파일에 fread을 특정 지점을 이동 fseek를 사용할 수 있습니다.

1

아니요, 전체 파일을 메모리로로드하지 않습니다. "파일 열기"는 파일을 읽거나 쓸 수있는 핸들을 반환합니다.

1

objective-c에 대해 잘 모르지만 대부분의 언어에서 파일을 열면 READ 조작으로 내용에 액세스 할 수 있습니다. 귀하의 경우, SEEK를 수행하여 파일 포인터를 원하는 위치로 이동 한 다음 필요한 바이트 수를 읽을 수 있습니다.

1

AudioFileOpenURLopen(2) 파일을 읽고 오디오 유형을 결정하는 데 필요한 정보 (4096 바이트)를 읽습니다.

open(2)은 전체 파일을 RAM에로드하지 않습니다.

( AudioFileOpenURL는 C API를하지 오브젝티브 C입니다.)

관련 문제