有一個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