实现大型文本文件阅读器的最佳策略

2023-12-30

我们有一个应用程序将其处理步骤记录到文本文件中。这些文件在实施和测试期间用于分析问题。每个文件的大小最大为 10MB,最多包含 100,000 行文本。

目前,对这些日志的分析是通过打开文本查看器(Notepad++ 等)并根据问题查找特定字符串和数据来完成的。

我正在构建一个有助于分析的应用程序。它将允许用户读取文件、搜索、突出显示特定字符​​串以及与隔离相关文本相关的其他特定操作。

文件不会被编辑!

在尝试一些概念时,我立即发现 TextBox(或 RichTextBox)不能很好地处理大文本的显示。我设法使用 DataGridView 实现一个具有可接受性能的查看器,但该控件不支持特定字符串的颜色突出显示。

我现在正在考虑将整个文本文件作为字符串保存在内存中,并且只在 RichTextBox 中显示非常有限数量的记录。为了滚动和导航,我想到添加一个独立的滚动条。

我使用这种方法遇到的一个问题是如何从存储的字符串中获取特定行。

如果有人有任何想法,可以突出我的方法的问题,然后谢谢。


我建议将整个内容加载到内存中,但作为字符串的集合而不是单个字符串。这很容易做到:

string[] lines = File.ReadAllLines("file.txt");

然后您可以使用 LINQ 搜索匹配的行,轻松显示它们等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现大型文本文件阅读器的最佳策略 的相关文章

随机推荐

  • 8 个后续字节的测试不会转换为单个比较指令

    动机是这个问题 https stackoverflow com q 63390851 580083 我比较了三个不同的函数来检查参数指向的 8 个字节是否为零 请注意 在原始问题中 字符与 0 not 0 bool f1 const cha
  • 如何使用 PC 键盘在 Android 模拟器中输入

    我无法使用 PC 键盘输入模拟器 谁能帮我 转到 Windows gt Avd Manager 选择您的 AVD 并对其进行编辑 然后在 硬件 部分下添加键盘支持 使其布尔值变为 true 并享受使用 PC 键盘打字的乐趣
  • 具有动态条目的自定义 ListPreference

    我需要 ListPreference 中的动态条目 因此我无法使用传统的 XML 设置方式 网上有大量材料 到目前为止 我已经进行了以下设置 如下所示 问题是 当我运行这个时 我看到带有标题和消息的对话框 但没有显示任何条目 即使我知道条目
  • 相当于 Python 中的 LinkedHashMap

    链接哈希映射 http java sun com j2se 1 5 0 docs api java util LinkedHashMap html是类似 Hashtable 的数据结构 Python 中的 dict 的 Java 实现 具有
  • 如何导出当前日期和时间并附加在包含“Hello”的每行末尾

    我有以下文件party txt包含如下内容 Hello Jacky Hello Peter Bye Johnson Hello Willy Bye Johnny Hello Mary Hello Wendy 我用的是grep hello捕获
  • OSX:启动应用程序的多个实例并向它们传递命令行参数

    有一个程序我需要多次启动并每次传递不同的参数 为此 我尝试编写一个简单的 python 脚本 如下所示 import sys os from os path import join This works but will not launc
  • 是否有 java 实用程序可以生成 http 多部分响应?

    我正在构建一个返回多部分响应的网络服务 我知道构建多部分响应的格式 如果我找不到现有的工具 我将构建自己的工具 也许我只是需要有关我的 google foo 的帮助 我发现的所有内容都是关于发布或使用多部分消息 没有关于生成多部分响应的内容
  • 如何在 webview 中显示无互联网连接对话框 |安卓工作室

    我正在尝试在网络视图中添加一条消息 当您没有互联网连接时 该消息应该会出现 我尝试了很多方法 但总是犯一个我不明白的错误 我创建了一个名为 assets 的文件夹 并按照 YouTube 教程添加了一个文件 error html 但它给了我
  • PHP crypt 和 salt - 请更多说明

    我昨天在这里得到了一些非常好的答案 我把我得到的东西放在一起 我认为这将是一个相当安全的算法 我在使用带有生成盐的 for 循环的河豚时遇到问题 我使用 base64 字符和 for 循环来获取随机字符串 我想获取这个生成的字符串并将其作为
  • Rails:无法访问我的 lib 目录中的模块

    我想创建一个通用字符串操作类 可以在我的 Rails 应用程序中的模型 视图和控制器之间使用 现在 我正在尝试将模块放入我的 lib 目录中 并且我只是尝试访问 Rails 控制台中的函数来测试它 我已经尝试了很多类似问题中的技术 但我无法
  • NSDate:获取独立于设备时钟的精确时间? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在应用程序运行之间本地检测用户的 iPhone 时钟进度 https stackoverflow com questions 7122216 how can i locally detect ip
  • Ruby On Rails - 地理编码器 - 接近条件

    我在我的应用程序中使用 GeoCoder 现在我需要在数据库中搜索靠近某个位置或具有特定属性集的对象 我想在一个数据库查询中执行此操作 因为数据库确实很大 我想要有类似的东西 Spot near lat long distance wher
  • 硬币组合的完整搜索算法

    该问题与硬币找零问题类似 但略有不同 问题描述为 你有一组硬币 并且你知道这些硬币的价值以及其中每种硬币的数量 您想知道可以从这些硬币的非空分组中赚取多少不同的金额 例如coins 1 2 3 和数量 1 2 2 有 11 种可能的和 基本
  • Laravel:外观实际上在调用方法时创建新对象吗?

    我有一个演示类 通常通过 this gt app gt bind demo function return new Demo 设立一个门面 protected static function getFacadeAccessor return
  • 在 R 中保存并重新加载“列表”对象

    我正在尝试将我手动创建的列表对象保存到以下内容中list我可以很快参考的格式 保存的对象应该能够作为list not df或任何东西 下面是我的列表对象的一部分 citations lt list as integer c 1 2 3 4
  • 任务管理器显示内存泄漏,但堆快照没有

    我每 5 秒运行一次大量 JavaScript 任务管理器显示内存使用量不断增加 然而堆快照却没有 如果我停止脚本 大约半分钟两分钟后内存将被清除 UPDATE 如果我长时间离开脚本 内存就会增加 直到浏览器崩溃 我还尝试运行 chrome
  • PostgreSQL 对文本数组值的查询

    我有一个表 其中一列有一个数组 但以文本格式存储 mytable id ids 1 3 4 2 3 5 3 3 etc 我想找到数组元素中值为 5 的所有记录ids column 我试图通过使用 字符串到数组 功能并删除 符号与transl
  • 在 NGRX 上的 ActionsSubject 订阅上使用操作的有效负载

    我又旧又坏Property payload does not exist on type Action执行此操作订阅 由于是创建操作 我需要有效负载来签出userId最近创建的用户并导航到 users userId 顺便说一句 我正在关注这
  • 删除测试期间生成的 id

    对于负载测试vu阶段我生成了很多具有唯一 ID 的对象 并将它们放入数据库中 我想在期间删除它们teardown阶段以免污染数据库 当保持这样的状态时 let ids export function setup ids push put i
  • 实现大型文本文件阅读器的最佳策略

    我们有一个应用程序将其处理步骤记录到文本文件中 这些文件在实施和测试期间用于分析问题 每个文件的大小最大为 10MB 最多包含 100 000 行文本 目前 对这些日志的分析是通过打开文本查看器 Notepad 等 并根据问题查找特定字符串