0

我正在尝试修改大(数百 MB).wav 音频文件的小块(32 字节)。目前我使用加载文件

[NSData dataWithContentsOfURL:]

修改字节,并使用保存文件

[data writeToURL:].

有没有一种方便的方法来修改二进制文件而不将其加载到 RAM 中?

编辑:以下stdio函数对我有用:

NSUInteger myOffset = 8;
const char *myBytes = myData.bytes;
NSUInteger myLength = myData.length;            
FILE *file = fopen([[url path] cStringUsingEncoding:NSASCIIStringEncoding], "rb+");
assert(file);       
fseek(file, myOffset, SEEK_CUR);
fwrite(myBytes, 1, myLength, file);
fclose(file);
4

1 回答 1

1

是的,您将使用较低级别的方法,例如fopen避免通过重复加载/重新加载文件NSData(正如您在更新中找到并提到的那样)。这是我为音频文件 I/O 工作的级别。

如果您想要 Foundation 类型,您可能想尝试NSFileHandle.

于 2012-09-08T18:01:25.080 回答