基本上我需要获取一个文本文件,例如:
Fred
Bernie
Henry
并能够按照
的顺序从文件中读取它们Henry
Bernie
Fred
我正在读取的实际文件>30MB,读取整个文件、将其拆分为一个数组、反转数组,然后从那里开始,这将是一个不太完美的解决方案。这需要太长的时间。我的具体目标是找到字符串的第一次出现(在本例中为“InitGame”),然后返回该行开头的位置。
我之前在 python 中做过类似的事情。我的方法是寻找文件的末尾 - 1024,然后读取行直到到达末尾,然后从我之前的起点寻找另一个 1024,并且通过使用tell(),当我到达前一个位置时我会停止初始点。因此,我会从文件末尾向后读取这些 block ,直到找到我要查找的文本。
到目前为止,我在 Java 中做这件事很开心。任何帮助将不胜感激,如果您住在巴尔的摩附近,您甚至可能会得到一些新鲜出炉的 cookies 。
谢谢!
更多信息:
我需要向后搜索,因为我正在读取的文件是我托管服务器的游戏的日志文件(这是关于城市恐怖的 |err| 服务器。检查一下)。日志文件记录了游戏中发生的每个事件,然后我的程序将解析每个事件,处理它,然后对其采取行动(例如,它会跟踪人们的爆头,并且还会自动踢掉那些被d-bags的人) )。我需要搜索回最新的 InitGame 条目,以便可以实例化所有玩家对象并处理自游戏开始以来需要处理的任何其他事情。文件中有数百个 InitGame 事件,但我想要最后一个。如果有更好的方法不需要向后搜索,请告诉我。
谢谢
最佳答案
您可以使用 RandomAccessFile 重复您的 Python 解决方案,并且可以是其之上的 LineNumberReader(或只是 Reader)的自定义子类。
关于java - 在Java中,如何从后到前迭代文本文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571758/