CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于DeleteFile的问题..大家帮帮忙

楼主Heavenangel(CONJURER)2005-08-03 20:11:53 在 VC/MFC / 基础类 提问

在OnInitDialog()中写有  
   
  fstream   f;  
  f.open("e:\\a.txt",ios::out);  
  SetTimer(1,set_t,NULL);  
  f.close();  
   
  然后在OnTimer()中的代码是  
   
  fstream   f;  
   
  if(nIDEvent==1)  
  {  
   
                    SetTimer(2,set_t,NULL);  
  DeleteFile("e:\\b.txt");  
  f.open("e:\\b.txt",ios::out);  
  KillTimer(1);  
  }  
  else   if(nIDEvent==2)  
  {  
   
  SetTimer(3,set_t,NULL);  
  DeleteFile("e:\\c.txt");  
  f.open("e:\\c.txt",ios::out);  
  KillTimer(2);  
  }  
  else   if(nIDEvent==3)  
  {  
  SetTimer(1,set_t,NULL);  
  DeleteFile("e:\\a.txt");  
  f.open("e:\\a.txt",ios::out);  
  KillTimer(3);  
  }  
  f.close();  
   
  为什么文件删除不掉呢..GetLastError的错误码是32.好像是"进程无法访问文件,因为另一个程序正在使用此文件。"但好像没有另一个程序在使用这个文件呀..怎么解决呀???大家帮帮我 问题点数:60、回复次数:13Top

1 楼rick29(rick.z)回复于 2005-08-03 20:18:25 得分 0

可能是你的程序在什么地方打开着这个文件。。。Top

2 楼Heavenangel(CONJURER)回复于 2005-08-03 20:20:37 得分 0

没有呀...就开了一个VC..一个资源管理器..没了呀..怎么会??Top

3 楼newbiestar()回复于 2005-08-03 20:21:42 得分 0

这个你看到的肯定是删不掉……ios::out默认没有文件就要创建,如此一来,就算删掉了你也看不到……看不到阿看不到……  
   
  你需要先判断DeleteFile的返回值,如果非0的话,根本不用去GetLastError……Top

4 楼boyplayee()回复于 2005-08-03 20:21:45 得分 0

DeleteFile("e:\\b.txt");  
  f.open("e:\\b.txt",ios::out);  
   
  //删除和打开的为什么是同一个文件呢?不懂Top

5 楼newbiestar()回复于 2005-08-03 20:22:50 得分 0

另外,建议你重启一下再试你的代码……从XP开始Windows好像就有这种乱七八糟的RPWT乐……Top

6 楼Heavenangel(CONJURER)回复于 2005-08-03 20:29:15 得分 0

不是我是第一个时钟删第二个时钟建立的文件,第二个时钟删第三个时钟建立的文件,第三个时钟删第一个时钟建立的文件,是循环删除.但没有办法删除掉..  
  ios::out我是先删再建立一个文件的呀...而且每次也都close()的..这个应该没什么问题的吧.Top

7 楼newbiestar()回复于 2005-08-03 20:44:52 得分 0

问题在于你这段代码里面删除和创建文件之间的间隔太短了,来不及让你看到,然后就创建了文件的……  
   
  删除A,并且重建A的这个过程对你来说太短暂了……  
   
  你要判断DeleteFile的返回值就知道是否删除成功了……如果删除不成功的话你就应该立即GetLastError,按照你现在的代码调用GetLastError都不知道是什么时候的事情了……Top

8 楼Heavenangel(CONJURER)回复于 2005-08-03 20:49:45 得分 0

这段程序只是我的一个测试..我在写的东西是这样的..在初始时先开启一个时钟1然后产生一个文件叫first.txt   然后在ontimer()中判断  
  如果是一号时钟的话那么开启二号时钟,然后产生一个second.txt的文件.并且删除first.txt  
  如果是二号时钟的话那么就开启一号时钟,然后产生一个first.txt文件.删除second.txt  
  也就是说两个文件只能存在一个.怎么做到????大家帮帮我Top

9 楼newbiestar()回复于 2005-08-03 21:22:07 得分 0

说了半天,你就是不愿意判断以下DeleteFile的返回值吗?Top

10 楼xuzebin(许)回复于 2005-10-15 19:51:58 得分 0

楼主能说一下deletefile是包含在那个头文件里面的吗?Top

11 楼Mackz(在相互)回复于 2005-10-16 00:21:29 得分 0

这种设计思想比较混乱,搞不清楚。Top

12 楼puma_xlc(天涯)回复于 2005-10-17 10:14:23 得分 0

DeleteFile("e:\\a.txt");  
  f.open("e:\\a.txt",ios::out)  
  删除了怎么还能够打开呢?  
  是不是用f.createfile   呢  
  来创建一个文件?  
  Top

13 楼ClientDC(萧柳)回复于 2005-10-17 10:51:37 得分 0

建议使用别的方式实现,比如信号灯,普通的可以设置各种标记位Top

相关问题

  • DeleteFile问题
  • DeleteFile无法删除文件
  • deletefile批量删除文件
  • DeleteFile的参数问题
  • API函数(DeleteFile)在vb调用
  • 关于DeleteFile的奇怪问题,
  • 怪!调用DeleteFile()为什么不能删除文件!??还有比DeleteFile更加安全的文件粉碎机吗?
  • 急!急!急!为何deletefile在win第二版上不起作用?
  • 我用DeleteFile删除文件,为什莫删不掉?
  • 怪了,为什么 DeleteFile 不能删除只读文件呢

关键词

  • 文件
  • 代码
  • null
  • deletefile
  • 时钟
  • 删除
  • txt
  • killtimer
  • settimer
  • nidevent

得分解答快速导航

  • 帖主:Heavenangel

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo