各位大侠,小菜又来提问了,哈哈哈,我现在有个关于读写文本文件的问题,比如,我现在有个DataTable,里面可能有几万甚至十几万数据,我想把这个DataTable中的数据写入到一个文本文件中,文件内容就是如下形式:第一行为表头名称,下面每行就是DataTable中的一行数据,比如:
Column1,column2,column3,column4
ABC,BCD,DEF,DHE
SDE,ASDF,FDGED,ASDFD
DED,AERE,FEDC,AADE
DFEE,TEDX,TEDX,DERE
这个表有四列四行,然后写入文本中后就是像上面的那个形式了,第一行是表头,下面每行就是源Table中的一行数据,这样的话,如果要读取就只要一行一行读取就OK啦,但是,当数据量大的时候就晕了啦,非常之慢,而且有可能报内存溢出错误,这样的话就可能有一个方案就是可以建一个索引表文件,索引表文件中存放的信息是Table中的一个主键字段的值信息和对应行在Txt文件中的行索引,那么查找的时候只要找到主键,然后得到这个索引值,再设置BaseStream中的Position这个属性,然后再读取这一行就可以了,比如:上面写的那个格式第一行为列名的索引是:0,第二行开始为数据行,假如索引号为:19,第三行的为:43,第四行的为:54,第五行的为:65,又假设第一列为主键列,那么我的索引表文件的格式就是如下了:
ABC,19
SDE,43
DED,54
DFEE,65
那么我查找的时候只要先在索引表文件中找到对应的行索引(19,43,54,65)然后将行索引赋值给Position,然后读取就可以了,我现在的问题就是这样能不能实现,如果能,那么这个行索引怎么得到?请大侠们指点指点,就此谢过了!!

解决方案 »

  1.   

    那么大的数据量,本来就是数据库的处理长项。
    你却要用最原始的TXT来处理,速度慢、效率低、难度大,这就没办法了。
      

  2.   

    那我现在就因为某些原因必须要用Text文件呢,那该怎么办?
      

  3.   

    而且我发现同样数据量,生成为二进制文的大小比text文件要大哦,不知道是我生成的方式有问题还是本来就是这样的?
      

  4.   

    应该是可以的,但要得到得索引,好象只能够遍历每一行,我觉得你可以在生成TXT文件的同时生成索引文件,不过索引应该是要按关键字排序的吧,如果大数据量的算法可能会有点麻烦。
    我以前写过一个分析CCProxy日志的程序,就是用类似的方法,不过没有建索引,只是遍历几十万条数据,然后把符合条件的显示在ListView里。