现有一文本文件 A,大约有30W条记录,要求,不断生成另一个文件B,B的记录数为一定值,如300个,同时在删掉A中已经放到B中的记录,如何实现,要求:速度要快。

解决方案 »

  1.   

    用XML格式。(可以把现有的A文件转换成XML格式,只有简单的一层节点)
    然后用微软提供的一套COM组件处理XML文件,msxml.dll就可以。
      

  2.   

    忘了说了,用XML的方法速度很快,可以仅对一个节点(记录)进行修改。
      

  3.   

    大哥们,我在文件中A有最少30W条记录,不知道怎么放到一个变量中,另外,能不能用简单的语句来实现,果不能用别的复杂方法能不能给出个例子,谢谢小弟刚研究VB,有些高难的看不懂的,再次谢谢
      

  4.   

    若记录可以Random方式读写,按你的要求,随机300条,可在毫秒级时间内完成。别说30W万条,300W条也是这个速度,因为Random方式与记录多少基本无关。
      

  5.   

    能给个例子吗,同时请教一下,什么叫random方式??
      

  6.   

    还有啊把 A 中的记录放到B中的过程我已经写完了,但如何在A中删掉已经写到B中的记录,我就不会了,请指教。
      

  7.   

    如果记录是定长的,可以算出偏移量打开。用API分割文件,再拼起来。
    原理就是分割文件。
    主要用 CreateFile() SetEndOfFile() ReadFile() WriteFile() 等
      

  8.   

    一时无言!这是文件访问的一个基本概念呀!Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。 若你有中文MSDN的话,搜索一下“随机文件”,就会知道了。
      

  9.   

    老大们,我要是的用VB从一个文件A中读出300个记录到B中,在A中把已经读出的记录删除,能不能明确给出个方法,最好有例子,再次谢谢
      

  10.   

    从一个文件 A 中读出 300 个记录到 B 中,很容易。
    但是,如果你熟悉文件在磁盘中存储的方式,就知道,“在 A 中把已经读出的记录删除”很麻烦。
    实际上,删除部分文本文件内容,无论它们是连续的还是离散的,实际上都是要删除原来的文件,保存新文件。这样必然涉及大量的磁盘操作,速度很慢。所以,请你换一个思路。如果是顺序地读,维护一个指针就可以了,下一次从新的指针处读起;如果是随机地读(必须是定长记录,用随机方式打开),需要将已读记录的字段清空。但实际上记录仍然存在。要从物理上删除记录,实际上需要重建文件。下面是 MSDN 的有关说明:删除记录
    通过清除其字段可以删除一个记录,但是该记录仍在文件中存在。通常文件中不能有空记录,因为它们会浪费空间且会干扰顺序操作。最好把余下的记录拷贝到一个新文件,然后删除老文件。
    要清除随机访问文件中删除的记录,请按照以下步骤执行: 创建一个新文件。
    把有用的所有记录从原文件复制到新文件。
    关闭原文件并用 Kill 语句删除它。
    使用 Name 语句把新文件以原文件的名字重新命