【发布时间】:2012-12-30 08:55:36
【问题描述】:
这是一个面试问题,对效率的担忧。当有一个非常大的文件(以 GB 为单位)时,类似于日志文件。我们如何从文件末尾找到第 10 次出现“error”或“java”等单词。我只能想到扫描整个文件,然后以相反的顺序找出发生的情况。但我认为这不是正确的做法! (最好用 C 或 Java 编码)
我还想知道另一件事。当面试官特别提到它是一个非常大的文件时,我们在开始编写代码时应该考虑哪些因素(除了记住扫描是非常昂贵的事情)
【问题讨论】:
-
如何查看文件 I/O 函数,看看是否有任何可以让您向后读取文件的方法,也许是先将读取位置设置在文件末尾?
-
至于您的第二段,您可能需要读取位(10-100 mb 块?),而不是将整个文件加载到内存中。或者这可能是他的说法,“不要从头开始阅读”!
-
看看mattfleming.com/node/11向后读取一个文本文件
标签: java c string algorithm large-files