我想读取已旋转为 bz2 文件的日志文件的内容。如何在使用尽可能少的内存的同时做到这一点?
问问题
439 次
2 回答
1
我只是用这些脚本弄清楚了:http: //www.cocoadev.com/index.pl?BzipValueTransformer & http://www.cocoadev.com/index.pl?NSDataPlusBzip
您需要做的是包括我在使用 macports安装libbz2.a
后发现的内容。我将文件拖到我的项目中并编写了代码:/opt/local/lib/libbz2.a
bzip2
- (void)bunzip
{
NSString *path = @"/var/log/kernel.log.1.bz2";
NSData *data = [NSData dataWithContentsOfFile:path];
NSString *dataString = [[Bzip2ValueTransformer alloc] transformedValue:data];
NSLog(@"Data: %@", dataString);
}
结果:
Dec 16 23:26:58 Paul-Peelens-MacBook-Pro kernel[0]: wlEvent: en1 en1 Link UP
Dec 16 23:26:58 Paul-Peelens-MacBook-Pro kernel[0]: AirPort: Link Up on en1
Dec 16 23:26:58 Paul-Peelens-MacBook-Pro kernel[0]: en1: BSSID changed to 32:7b:98:82:9d:7f
Dec 16 23:30:10 paul-peelens-macbook-pro newsyslog[13862]: logfile turned over due to size>1000K
于 2012-01-04T20:55:09.717 回答
0
我会使用 NSTask 或我自己的 PRHTask打开一个bunzip2进程,其标准输入连接到 bzip2 文件,其标准输出设置为管道。当数据进入时,使用 NSFileHandle 的异步读取或 GCDdispatch_source
在后台从该管道读取。
于 2012-01-04T20:45:33.463 回答