收录日期:2020/05/27 10:38:28 时间:2016/06/12 02:12:17 标签:基础类
现在作一个软件,有一个功能是删除数据文件中指定的一段数据.
我现在的做法是把要删除的数据前面,和后面的数据分别读出来,然后删除文件,重新建立文件再将两部分写进去.可数据有时回很大这样很浪费资源,而且我刚才调了一下程序总是内存泄漏,
谁有更好的方法吗,请指点一下
你应该一边读一边写,写完后删除旧文件,命名新文件
CString str_Delete = "要删除的内容";
CString s;
CFile file;
file.Open("1.txt",CFile::modeReadWrite);

BYTE *buf;
long len;
len=file.GetLength();
buf=(BYTE*)malloc(len);
file.ReadHuge(buf,len);


s = (LPCTSTR)(LPSTR)buf;
s.Replace(str_Delete,"");  //替换成""

file.SeekToBegin();
file.WriteHuge(s,s.GetLength());
file.Close();
240 K 的txt文件试了一下,刷就完成了
要是240M呢?:)
这样不行,我根本不知道"str_Delete"应该是什么内容,只知道要被删除的数据在文件中的位置. 
不过谢谢你
一楼的有道理,我试一下
月亮之星我想问一下,你这样做的话会不会在文件中间出现“”呢?即会不会出现如下这种情况
tqwte
wertwert
wertwert

               //这都是空格吗?

asdf
""不是空格,代表没有什么
" "才是空格
程序总是内存泄漏应该是你的代码有问题
不要一下子把文件全放到内存,可以用filemapping的
不需要新建文件啊,从文件删除点后面开始读取,写入到删除点开始的地方。如果是结构化的文件,用内存映射文件更方便。

我这个XML中的节点该如何读取? 刚刚接触,怎样建立一个数据库? js达人帮下~~~动态表单的判空问题! folderBrowserDialog控件,原来好的,现在出了个怪问题,不知道原因,请进 oracle判断问题,答对马上就给分 在线 在线求救!!!!! 大家帮帮忙,关于广播包的发送 一个关于vc调用vb制作的dll的问题 做了一個以StringGrid為基類的組件,出現這樣的問題?求助高手~! ==关于Windows 2000 的winnt的目录下看不到文件===结决方法求助 是不是说点了一个超链接后就等于离开站点了?Session的值也就重置了? 怎样把datagrid编辑功能中默认的textbox改为别的控件? jsp+Bean的简单计数器,遇到问题 如何能用mciExecute 这个API循环播放MID文件? JBuilder X整合jboss,需要用什么版本的插件和什么版本的JBOSS VB与ACCESS2000可以直接链接吗?如果可以怎样作?(最好是控件) 怎么判断DataGrid的某一列有多少个不同的元素 sql查询分析器登陆问题 有谁试过这种情况?jdk15 函数问题!!?????????????? 大侠们!!帮帮忙,问题。 javascript如何修改下拉选择菜单?高手指教!!!!========马上给分========= 单片机RS485通信接口如何调试,是不是可以直接连到PC上,用串口调试助手什么的? 请较高手 :我再delphi5中怎么进行Tdate类型之间的加减运算date1-date2,而不是date1-27这样的运算date1、date2为Tdate型 关闭窗口的问题... 如何直接控制打印机输出?在C语言中用的fprintf(stdprn,\"%s\",Data)函数,在Delphi中应如何写?请高手指教!!! 不行了,一个对话框整死了!高人救命~~~ 达人帮下~~~动态表单的判空问题! 机上装两个显卡,接两台显示器,要求不同输出? 如何用VS.2003中的 示例与快速入门教程