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