C# 文件操作

最近遇到一个需求,需要将超大文件中的帧头解析出来,并将帧头和数据部分分别存在文件中

整体思路如下:

1、读取待处理路径,根据命名规则筛选出需要处理的文件

2、判断输出路径是否存在,不存在,则新建

3、开始读取文件,将文件分块处理(根据信息长度分块)(此步骤相当重要,能够大幅提高运行效率)

4、在块内再对每个帧进行处理

5、为了加快速度,使用多线程(每个文件一个线程),Task进行处理

6、退出线程,异常处理(推出task尽量不要使用cancel),可以使用一个标志位,推出所有循环。

这样做的好处是可以很简单的继续进行下一次任务!

优化:

后期也可以进行优化,比如边读边写,或者是在将文件分为帧头和信息两部分后,也可以启动线程,进行异步处理。

测试的时候发现一个问题,我在异常处理中加入了特别少量的代码处理了一下业务逻辑,结果整个程序的效率降低的特别夸张。

以前总是说在异常处理中不要进行业务处理,还没有深刻的体会,现在是真见识到了。

catch中最好打个日志就行,finally中最好也就是释放资源类的操作,切忌进行业务逻辑处理。

 

posted @ 2022-08-15 09:35  CP3CP4  阅读(45)  评论(0编辑  收藏  举报