C#】急求大容量文本文件折半查询解决方法

来源:百度知道 编辑:UC知道 时间:2024/06/19 11:21:50
文本文件如:base.txt
拥有数据行数5000行记录。
格式如下:barcode name
96541236 统一奶茶
89556644 三路奶粉
...
条件:当输入barcode时,通过对比文本中的barcode列将name列的数据显示出来。想要通过对barcode的排序,用折半来实现查询,提高查询的速度。但是由于初入门,所以请教各位大侠。
由于操作文本在wince平台,所以内存有限,如果从头到尾的对比数据的话,将会是一个很漫长的等待时间。急求解决方法。或者还有什么好的方法也可以提出建议。谢谢。
网络剑客Eks你提供的方法跟我原来的用法其实是差不多的,由于文本数据达5000行,若用你所说的方法所需时间也是很长的。
我的思路是采用排序折半查询的算法,听别人说这种方法可以大大的加速查询的速度。因为排序之后,在查询文本的时候可以分段来查。不知是不是就是这个意思。但是实现起来不是很懂。

文本放入Hashtable中,再从Hstb里面读数据,速度会慢很多。(操作已经把文本中的值全部放到了hashtable中)
如果你只能用这个txt文本拿的话:

while (true)
{
String str="10";
StreamReader rd = new StreamReader(@"d:\base.txt");//目标txt地址
while (true)
{
try
{
if (rd.ReadLine().Substring(0, str.Length).Equals(str))
{
Console.WriteLine(rd.ReadLine());
//return; //继续读就不要注释
}
}
catch { }
}

}

当然这只是一个思路。
要把数据都放在一个容器中,再找,肯定消耗资源更大了。

------------------

你的意思是单线程太慢是吧。
单线程太慢,那就多线程查找。
给你这个思路:

public void Read1()
{
//执行操作:读文件前一半