我有一个文本文件,其中包含一些超过 7GB 的巨大帐户详细信息。每行包含单个帐户的详细信息和其他信息。在这里我想阅读一些帐户详细信息,其中包含前 3 个字符作为“XBB”。如果我曾经逐行搜索,那将需要很长时间,所以我想直接点击包含“XBB”的特定行。
在 Java 或 VB 或 VB.net 中是否有任何可能的方法来做到这一点
如果这些行按它们的前 3 个字符排序,那么您可以进行二进制搜索。如果线条是固定长度,这很简单。否则,您将需要在二进制搜索的每个步骤中搜索每一行的开头。
如果您知道该行的索引,您可以尝试直接访问它。同样,如果线条是固定长度的,这很简单。否则,您仍然需要进行一些探索和搜索。
在 Java 中,用于此目的的工具是RandomAccessFile
. 我不了解 VB/VB.net。
按照 Peter Lawrey 的建议,如果您愿意扫描文件一次,您可以在每个 3 字符前缀开始的文件中构建偏移量索引。然后,您可以使用它来非常快速地到达正确的线路。
你使用什么语言并不重要。找到某物的唯一方法就是搜索它。你可以使用Lucene之类的搜索工具提前进行搜索,即创建全文搜索索引,或者你可以像现在这样在需要时进行搜索,但你将无法逃避搜索部分。
只有当您有一个索引文件,并且该索引文件包含您要搜索的特定数据列的索引时,您才能执行此操作。
另一种选择是将文件加载到数据库中,如 Sql Server Express,并在其上运行 sql 查询。
使用正则表达式 (regex)。使用这些,您可以设置仅包含这些特定字母的表达式。然后使用扫描仪,它将仅查找该字母序列。