高分求:如何在文本文件中删除部分记录?????? 现有一文本文件 A,大约有30W条记录,要求,不断生成另一个文件B,B的记录数为一定值,如300个,同时在删掉A中已经放到B中的记录,如何实现,要求:速度要快。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用XML格式。(可以把现有的A文件转换成XML格式,只有简单的一层节点)然后用微软提供的一套COM组件处理XML文件,msxml.dll就可以。 忘了说了,用XML的方法速度很快,可以仅对一个节点(记录)进行修改。 大哥们,我在文件中A有最少30W条记录,不知道怎么放到一个变量中,另外,能不能用简单的语句来实现,果不能用别的复杂方法能不能给出个例子,谢谢小弟刚研究VB,有些高难的看不懂的,再次谢谢 若记录可以Random方式读写,按你的要求,随机300条,可在毫秒级时间内完成。别说30W万条,300W条也是这个速度,因为Random方式与记录多少基本无关。 能给个例子吗,同时请教一下,什么叫random方式?? 还有啊把 A 中的记录放到B中的过程我已经写完了,但如何在A中删掉已经写到B中的记录,我就不会了,请指教。 如果记录是定长的,可以算出偏移量打开。用API分割文件,再拼起来。原理就是分割文件。主要用 CreateFile() SetEndOfFile() ReadFile() WriteFile() 等 一时无言!这是文件访问的一个基本概念呀!Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。 若你有中文MSDN的话,搜索一下“随机文件”,就会知道了。 老大们,我要是的用VB从一个文件A中读出300个记录到B中,在A中把已经读出的记录删除,能不能明确给出个方法,最好有例子,再次谢谢 从一个文件 A 中读出 300 个记录到 B 中,很容易。但是,如果你熟悉文件在磁盘中存储的方式,就知道,“在 A 中把已经读出的记录删除”很麻烦。实际上,删除部分文本文件内容,无论它们是连续的还是离散的,实际上都是要删除原来的文件,保存新文件。这样必然涉及大量的磁盘操作,速度很慢。所以,请你换一个思路。如果是顺序地读,维护一个指针就可以了,下一次从新的指针处读起;如果是随机地读(必须是定长记录,用随机方式打开),需要将已读记录的字段清空。但实际上记录仍然存在。要从物理上删除记录,实际上需要重建文件。下面是 MSDN 的有关说明:删除记录通过清除其字段可以删除一个记录,但是该记录仍在文件中存在。通常文件中不能有空记录,因为它们会浪费空间且会干扰顺序操作。最好把余下的记录拷贝到一个新文件,然后删除老文件。要清除随机访问文件中删除的记录,请按照以下步骤执行: 创建一个新文件。把有用的所有记录从原文件复制到新文件。关闭原文件并用 Kill 语句删除它。使用 Name 语句把新文件以原文件的名字重新命 世间最寂寞的事,最痛苦的事 datagrid控件的列宽属性 datagrid中的添加和删除列的操作? 高手支招,自定义报表模板格式的问题。急!!!50分送上,来者上分。 会做木马的进来 怎样将ADO打包进安装程序? 软件发布,加入新的功能 怎么在listview中加checkbox? 散分,一个关于installshield的非常简单的问题! 帮忙啊! 数据库 连接问题 怎样用VB代码完成创建数据库及相关表结构----急!
然后用微软提供的一套COM组件处理XML文件,msxml.dll就可以。
原理就是分割文件。
主要用 CreateFile() SetEndOfFile() ReadFile() WriteFile() 等
但是,如果你熟悉文件在磁盘中存储的方式,就知道,“在 A 中把已经读出的记录删除”很麻烦。
实际上,删除部分文本文件内容,无论它们是连续的还是离散的,实际上都是要删除原来的文件,保存新文件。这样必然涉及大量的磁盘操作,速度很慢。所以,请你换一个思路。如果是顺序地读,维护一个指针就可以了,下一次从新的指针处读起;如果是随机地读(必须是定长记录,用随机方式打开),需要将已读记录的字段清空。但实际上记录仍然存在。要从物理上删除记录,实际上需要重建文件。下面是 MSDN 的有关说明:删除记录
通过清除其字段可以删除一个记录,但是该记录仍在文件中存在。通常文件中不能有空记录,因为它们会浪费空间且会干扰顺序操作。最好把余下的记录拷贝到一个新文件,然后删除老文件。
要清除随机访问文件中删除的记录,请按照以下步骤执行: 创建一个新文件。
把有用的所有记录从原文件复制到新文件。
关闭原文件并用 Kill 语句删除它。
使用 Name 语句把新文件以原文件的名字重新命