【发布时间】:2015-04-21 15:11:10
【问题描述】:
使用 NSFileHandle,很容易使用 truncateFileAtOffset 从文件末尾删除 n 个字符。
-(void)removeCharacters:(int)numberOfCharacters fromEndOfFile:(NSFileHandle*)fileHandle {
unsigned long long fileLength = [fileHandle seekToEndOfFile];
[fileHandle truncateFileAtOffset:fileLength - numberOfCharacters];
}
但是,如果必须将所有剩余数据复制到内存中、覆盖文件然后将剩余数据写回文件中,从文件前面删除字符似乎是不可能的。
-(void)removeCharacters:(int)numberOfCharacters fromBeginningOfFile:(NSFileHandle*)fileHandle {
[fileHandle seekToFileOffset:numberOfCharacters];
NSData *remainingData = [fileHandle readDataToEndOfFile];
[fileHandle truncateFileAtOffset:0];
[fileHandle writeData:remainingData];
}
此代码有效,但会成为大文件的负担。我错过了什么?
理想情况下,我希望能够替换CharactersInRange:withData:
【问题讨论】:
标签: ios nsfilehandle