希望有人能指出我在正確的方向尋找如何從一個巨大的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