我有一个应用程序,我一直负责清理后。应用程序本身相对简单 - 它运行SQL查询,使用Web服务,并将结果传送到日志文件。我的工作是在应用程序完成后将文件存档到我们的NAS。它专门锁定文件直到完成它们,因此增加了一点复杂性。我也不允许触摸应用程序,只是日志。反正我的应用程序相当简单:Reverse Streamreader
- 检查文件是否可以打开(赶上IOException异常),并把它划掉一个布尔[]如果没有异常被抛出访问。
- 浏览标记为true的文件数组,使用ReadLine方法将文件的每一行读入StreamReader。由于应用程序偶尔打嗝并且没有完成,我不能简单地使用IOException来判断文件是否完成 - 我必须实际解析文本。
- 如果找到指示完成的文本,则压缩文件,将存档文件加载到NAS中,然后删除原件。
我的代码工作,它只是非常耗时(每个日志文件大约500 MB)。我对改进的想法包括从文件底部开始搜索,而不是从顶部开始搜索,但StreamReader不支持这种方法。我不能使用ReadToEnd方法,然后反向读取,因为这只会引发内存不足异常。任何想法,我可以加快解析日志文件?
你知道解析文件是缓慢的部分代码来完成?没有ziping,复制到NAS,删除或尝试打开文件(并可能失败)所有这些事情听起来像他们可能需要一段时间 – luke 2010-06-04 17:27:05
可能dupe:http://stackoverflow.com/questions/452902/how-to-read -a-text-file-reversely-with-iterator-in-c – 2010-06-04 17:36:12
好问题。是的,这绝对是解析,这是执行的耗时部分。我将代码分成单独的函数并在每个函数上放置断点。压缩需要大约30-45秒,解析可能需要两个多小时。 – monkeyninja 2010-06-04 17:50:04