rpt*_*thi 2 objective-c file-handling nsfilehandle
我正在尝试阅读包含数十亿字符的文本文件.使用该功能
contentOfFile不起作用,因为我的应用程序因此而崩溃.
所以任何人都可以给我发送示例代码,以便根据我的要求获得大块.无论我需要什么,我只想获得那个.请尽可能尽快回复.
Car*_*ter 14
我猜这是一个iOS应用程序.在这种情况下,您可能通过调用来达到内存限制,contentsOfFile:因为该方法试图将文件的全部内容读入变量(内存).请记住,在iOS上你的应用程序必须运行良好,如果它决定消耗太多内存,那么监视程序进程将终止你的应用程序以防止设备重启(这是因为没有磁盘可以在iOS设备上交换).
你看过了NSFileHandle吗?NSFileHandle支持在文本中搜索文件.通过一些简单的迭代,您可以使用以下方法在文件中搜索并读取数据块:
- (NSData *)readDataOfLength:(NSUInteger)length;
- (void)seekToFileOffset:(unsigned long long)offset;
Run Code Online (Sandbox Code Playgroud)
它可能看起来像这样.假设pathToFile是NSString包含要读入的文本文件的路径.
uint64 offset = 0;
uint32 chunkSize = 1024; //Read 1KB chunks.
NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:pathToFile];
NSData *data = [handle readDataOfLength:chunkSize];
while ([data length] > 0)
{
//Make sure for the next line you choose the appropriate string encoding.
NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
/* PERFORM STRING PROCESSING HERE */
/* END STRING PROCESSING */
offset += [data length];
[handle seekToFileOffset:offset];
data = [handle readDataOfLength:chunkSize];
}
[handle closeFile];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6032 次 |
| 最近记录: |