希望有人能指出我在正确的方向寻找如何从一个巨大的XML文件(50K +线)读取给定的行号?如何读取objective-c文件中的特定行号?
2
A
回答
1
由于XML文件中的行通常不具有固定的长度,因此无法确定文件中第n行开始的位置。你必须从头开始阅读,并计算行数,直到找到你想要的。
如果您要频繁访问此文件,您可能想要做的一件事就是为该文件构建一个索引。扫描文件并将每行起始处的文件偏移量写入索引文件。由于这些偏移量都具有相同的大小,并且由于每行都有一个偏移量,因此可以通过读取索引文件中的第n个偏移量来找到数据文件第n行的偏移量。
+0
感谢迦勒 - 绝对确认我是这样做的正确方法。我基本上创建了一个索引文件,通过缓慢地迭代我的主索引文件,然后吐出偏移的开始和结束。我保存了开始和结束索引(而不是行号)。现在,我只是像这样使用NSFileHandle:[fileHandle seekToFileOffset:offsetStart]; NSString * kmlChunk = [[NSString alloc] initWithData:[fileHandle readDataOfLength:(offsetEnd-offsetStart)] encoding:NSUTF8StringEncoding]; – capikaw
0
我就是这么做的:
我第一次加载该文件在内存中(50K +线是大,但有可能):
__block NSUInteger currentLineNum = 1;
[fileAsString enumerateLinesUsingBlock:
^(NSString *line, BOOL *stop)
{
// Handle line here...
currentLineNum++;
}];
:
// Load file as single string.
// NSISOLatin1StringEncoding works most of the time.
// Use other encoding if necessary.
NSStringEncoding encoding = NSISOLatin1StringEncoding;
NSError *error = nil;
NSString *fileAsString = [NSString stringWithContentsOfFile: path
encoding: encoding
error: &error];
if (error != nil)
NSLog(@"%@", error);
然后我用这个列举行
这样你就可以很容易地找到你要找的号码。
也许有更好的方法,但这个工程。
相关问题
- 1. 如何从大文件中的特定行读取特定行
- 2. ObjectiveC:按特定顺序读取特征
- 3. 如何读取特定行的文件
- 4. StreamReader读取特定行号
- 5. 从文件中读取特定的行
- 6. 读取文件中的特定行
- 7. OCaml:读取文件中的特定行
- 8. 如何从特定行号读取csv文件直至提供行号?
- 9. 在ObjectiveC中读取.doc(MSWord)文件?
- 10. 如何只读取文本文件中的特定行?
- 11. Python - 如何读取文本文件中的特定行?
- 12. 如何从VHDL文本文件中的特定行读取
- 13. 如何读取WPF中的.csv文件中的特定行(xaml)
- 14. 从大文件中读取特定行
- 15. 从文件中读取特定行
- 16. 从文件中读取特定行
- 17. PHP:从文件中读取特定行
- 18. C - 从文件中读取特定行
- 19. 如何从文件中读取一行中的特定字符?
- 20. 如何在Python中读取CSV文件中的特定行
- 21. 如何在BASH中读取文件中的特定行?
- 22. 在PHP中读取特定字的文件中的特定行
- 23. 如何阅读文件的特定行?
- 24. 如何从文件中读取特定的行
- 25. 如何从文件中读取特定数量的行C
- 26. 如何读取txt文件中的特定行vb 6
- 27. 如何在swift4中读取特定文件的行?
- 28. 如何读取文件中特定行的数据?
- 29. 如何读取块的文本文件,返回的特定行
- 30. 如何使用行号从文件中读取特定的行而无需遍历java中的整个文件?
也许多一些信息会有帮助,你是否匹配模式 –
重复12行模式,但每行是不同的长度(一些非常长)。实现了DDFileReader逐行阅读器,但需要iPhone将近90秒才能解析并找到我正在查找的信息。我已经创建了一个索引文件,提供了行号 - 但不太确定如何抓住这些行... – capikaw