前端之家收集整理的这篇文章主要介绍了
VB快速查找大型文件中包含的字符串,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
关于查找大型文件中包含的字符串,一般都把文件内容读入到内存,然后在内存里进行比较,却不知这种办法有一个致命的弱点,那就是由于大量的内存申请和释放导致的内存颠簸,会使系统性能下降,严重影响了查找的速度。特别是在递归中对多个文件进行查找时,这个问题会更加突出,有时甚至会导致VB程序挂掉。为避免这种情况,同时加快大型文件中字符串的查找速度,俺基于内存影射文件和VB模拟指针技术,编写了一个通用字符串查找函数。
首先,先看一个普通的查找函数:
- @H_403_30@
- Private@H_403_37@FunctionFindText(@H_403_37@ByValstrFileName@H_403_37@As@H_403_37@String,@H_403_37@ByValstrText@H_403_37@String)@H_403_37@Long@H_403_30@
- @H_403_37@Dimfn@H_403_37@Integer@H_403_30@
- DimstrFileText@H_403_37@String@H_403_30@
- @H_403_30@
- DimMyString,MyNumber@H_403_30@
- DimS@H_403_37@String@H_403_30@
- @H_403_30@
- fn=FreeFile()@H_403_30@
- OpenstrFileName@H_403_37@ForBinary@H_403_37@As#fn@H_403_30@
- strFileText=Input(LOF(fn),fn)@H_403_30@
- Close#fn@H_403_30@
- FindText=InStr(strFileText,strText)@H_403_30@
- End@H_403_37@Function@H_403_30@
用一个400K的文本进行测试,测试次数为20次,测试代码如下:
copy