有一个AudioFileOpenURL函数可以打开一个文件。使用AudioFileReadPackets可以访问该文件以读取数据包。但是我脑海中的一件事是:AudioFileOpenURL实际上是否将整个怪物加载到内存中?或者是一个轻量级的操作?“打开文件”是否意味着将其完全加载到内存中?
那么是否有可能从文件中读取数据,只有特定的部分,没有在内存中的全部TB的东西?
有一个AudioFileOpenURL函数可以打开一个文件。使用AudioFileReadPackets可以访问该文件以读取数据包。但是我脑海中的一件事是:AudioFileOpenURL实际上是否将整个怪物加载到内存中?或者是一个轻量级的操作?“打开文件”是否意味着将其完全加载到内存中?
那么是否有可能从文件中读取数据,只有特定的部分,没有在内存中的全部TB的东西?
AudioFileOpenURL实际上是否会将整个怪物加载到内存中?
不,它只是让你一个文件指针。
或者是一个轻量级的操作?
是的,相当轻量级。只需要一个文件系统查找。
那么是否有可能从文件中读取数据,只有特定的部分,而没有在内存中的全部TB的东西?
是的,你可以使用fseek
去某一点在文件中,然后fread
将其读入缓冲区(或AudioFileReadBytes
)。
不,它不会将整个文件加载到内存中。 “打开文件”返回一个句柄,允许您读取或写入文件。
我不知道Objective-C,但是用大多数语言打开文件,这只是让您有能力通过READ操作访问内容。在你的情况下,你可以执行一个SEEK来将文件指针移动到所需的位置,然后读取你需要的字节数。
AudioFileOpenURL
将open(2)
该文件并读取必要的信息(4096字节)以确定音频类型。
open(2)
不会将整个文件加载到RAM中。
(AudioFileOpenURL
是C API,而不是Objective-C。)
是的。是。 :) – 2010-05-01 13:05:00