2010-05-01 158 views
1

有一個AudioFileOpenURL函數可以打開一個文件。使用AudioFileReadPackets可以訪問該文件以讀取數據包。但是我腦海中的一件事是:AudioFileOpenURL實際上是否將整個怪物加載到內存中?或者是一個輕量級的操作?「打開文件」是否意味着將其完全加載到內存中?

那麼是否有可能從文件中讀取數據,只有特定的部分,沒有在內存中的全部TB的東西?

+0

是的。是。 :) – 2010-05-01 13:05:00

回答

2

AudioFileOpenURL實際上是否會將整個怪物加載到內存中?

不,它只是讓你一個文件指針。

或者是一個輕量級的操作?

是的,相當輕量級。只需要一個文件系統查找。

那麼是否有可能從文件中讀取數據,只有特定的部分,而沒有在內存中的全部TB的東西?

是的,你可以使用fseek去某一點在文件中,然後fread將其讀入緩衝區(或AudioFileReadBytes)。

1

不,它不會將整個文件加載到內存中。 「打開文件」返回一個句柄,允許您讀取或寫入文件。

1

我不知道Objective-C,但是用大多數語言打開文件,這只是讓您有能力通過READ操作訪問內容。在你的情況下,你可以執行一個SEEK來將文件指針移動到所需的位置,然後讀取你需要的字節數。

1

AudioFileOpenURLopen(2)該文件並讀取必要的信息(4096字節)以確定音頻類型。

open(2)不會將整個文件加載到RAM中。

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

相關問題