我有一个应用程序,之后我的任务是清理。应用程序本身相对简单 - 它运行 SQL 查询,使用 Web 服务,并将结果发送到日志文件。我的工作是在应用程序完成后将文件归档到我们的 NAS。它会专门锁定文件,直到处理完它们,所以它增加了一点复杂性。我也不允许触摸应用程序,只能触摸日志。无论如何,我的应用程序相当简单:
- 检查文件是否可以打开(捕获 IOException),如果没有抛出异常,则在 bool[] 中将其标记为可访问。
- 遍历标记为 true 的文件数组,使用 ReadLine 方法将文件的每一行读入 StreamReader。因为应用程序偶尔会打嗝并且没有完成,所以我不能简单地使用 IOException 来判断文件是否完成 - 我必须实际解析文本。
- 如果找到指示完成的文本,请压缩文件,将存档文件加载到 NAS,然后删除原始文件。
我的代码有效,只是非常耗时(每个日志文件大约 500 MB)。我对改进的想法涉及从文件底部而不是从顶部开始搜索,但 StreamReader 不支持这种方法。我不能使用 ReadToEnd 方法然后反向读取,因为这只会引发内存不足异常。关于加快日志文件解析的方法有什么想法吗?