遍历一个文件夹(其中包括遍历子文件夹),把其中所有以“zkjg”开头的txt文件读出,需要取每个txt文件的每一行中的特定数据(每一行以逗号分割)。
目前的做法是先定义一个文本文件的集合,再循环这个集合对其中的文本文件进行操作。
foreach(遍历文件夹和子文件夹)
文本集合;//取得文本集合
然后
foreach(遍历文本集合)
对每个文本进行操作;问题是,当文本文件数量较多,文本文件中数据较大时,运行出现程序未响应状态,过很长时间才恢复,此时结果也出来了。请问如何修改性能?谢谢!
目前的做法是先定义一个文本文件的集合,再循环这个集合对其中的文本文件进行操作。
foreach(遍历文件夹和子文件夹)
文本集合;//取得文本集合
然后
foreach(遍历文本集合)
对每个文本进行操作;问题是,当文本文件数量较多,文本文件中数据较大时,运行出现程序未响应状态,过很长时间才恢复,此时结果也出来了。请问如何修改性能?谢谢!
1.文件打开后一定要关闭并释放资源,建议使用using(XXXXXXXXXX){}的方式
2.如果是顺序读取文件,必然耗时,可以考虑多线程的方式,这样一次可以读多个文件
3.结合你的应用,你可以考虑使用SQL server 中的SSIS
4.读文件时要按流的方式,不要一下把文件内容全部载入内存
提示一个方案:
1.C#中有一个方法可以直接搜索文件,好像是Directory.GetFiles("*sdf*.txt")。
2.把上面的文件数组分成多份,并分别在多个线程中遍历。
3.做一个全局变量,让每个线程根据遍历情况更新。
4.界面上进行不断刷新来读取上面的全局变量,这样虽然运行慢,但用户可以了解进度。
对每个文本进行操作;