“打开文件”是否意味着将其完全加载到内存中?

时间:2010-05-01 13:03:15

标签: c objective-c

有一个AudioFileOpenURL函数可以打开一个文件。使用AudioFileReadPackets访问该文件以读取数据包。但是我的大脑中有一件事是:AudioFileOpenURL是否真的将整个怪物加载到内存中?或者这是一个轻量级的操作?

那么是否可以从文件中读取数据,只读取特定部分的数据,而不会在内存中读取全部TB的数据?

4 个答案:

答案 0 :(得分:2)

  

AudioFileOpenURL是否真的将整个怪物加载到内存中?

不,它只是给你一个文件指针。

  

或者是轻量级操作?

是的,相当轻巧。只需要一个文件系统查找。

  

那么是否可以从文件中读取数据,只读取特定部分的数据,而不会在内存中读取全部TB的数据?

是的,您可以使用fseek转到文件中的某个点,然后fread将其读入缓冲区(或AudioFileReadBytes)。

答案 1 :(得分:1)

不,它不会将整个文件加载到内存中。 “打开文件”会返回一个句柄,允许您读取或写入文件。

答案 2 :(得分:1)

我不知道objective-c,但是对于大多数语言你打开文件,这只是让你能够通过READ操作访问内容。在您的情况下,您可以执行SEEK将文件指针移动到所需的位置,然后读取您需要的字节数。

答案 3 :(得分:1)

AudioFileOpenURLopen(2)文件并读取必要的信息(4096字节)以确定音频类型。

open(2)不会将整个文件加载到RAM中。

AudioFileOpenURL是一个C API,而不是Objective-C。)