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 に答える