2013-07-12 60 views
0

我有一个文本文件,它有很多行我怎样才能从文本文件中获得最后'n'行数?我们可以给每个文件的文本文件的数字我们如何才能得到它。如何读取目标文本文件中的最后n行文件C

+0

你的意思是你只想最后一行? –

+0

不完全是最后一行但是最后100行.. – kiri

+0

尝试实现我的答案。我希望你会得到你的答案.... –

回答

2

你可以使用NSFileHandleseekToEndOfFile然后从offsetInFile使用seekToFileOffset:readDataOfLength:扫描数据读取回车每次和计数,直到你得到所需数量的向后工作。随着你走,你可以在每次扫描后建立文本。

0

尝试使用此一:

NSString* textFile = [[NSBundle mainBundle] 
        pathForResource:@"fileName" ofType:@"txt"]; 

    NSString* fileContents = [NSString stringWithContentsOfFile: textFile 
      encoding: NSUTF8StringEncoding error: nil]; 

单独由新线

NSArray* allLinedStrings = 
      [fileContents componentsSeparatedByCharactersInSet: 
      [NSCharacterSet newlineCharacterSet]]; 

在这里你可以得到你的最后100个对象

NSString* oneLineStr; 
    for (int i = allLinedStrings.count - 100; i < allLinedStrings.count; i++) 
    { 
     oneLineStr = [allLinedStrings objectAtIndex: i]; 
     [email protected]("New Line %@", oneLineStr); 
    } 
+0

如果文件大小为10 MB会怎么样?你会等几秒钟才能完成几毫秒的事情吗? – Sulthan

+0

是的,当然,它会等待,如果你的解决方案,然后让我知道吗? –

0

一种方法是把\ n至将文本文件中的不同行分开。然后

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
               ofType:@"txt"]; 
NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 
NSArray* lines = [content componentsSeparatedByString: @"\n"]; 

然后你可以把数组中的最后几个元素。

希望这会有所帮助..

相关问题