C++ CFile::Rename 出现“拒绝访问”异常 及解决方案(不能说原创,自己悟出来的)

出现这样的问题,是由于我们FTP上的的打包文件解包到本地文件夹中,由于FTP上打包文件中含一个.db的文件,再对其文件进行写数据时,出现了拒绝访问异常(其他文件写数据一切正常),没办法只能想办把此类型文件扩展名改成了.tmp临时文件,当数据写完后再改回原来的.db文件,但重命名时就出现了下面异常,废话不多说了。。。

 

问题:C++ 对新创建的文件进行写数据后,如果再对其进行重命名,则可能会出现拒绝访问

原因:是因为系统认为当前文件夹中可能与你重命名件同名文件存在,所以不允许重命令,会报出“拒绝访问异常"(个人理解是这样的)

解决方案:

 CString oldName = "test.txt";
 CString newName = "newTest.txt";
 CFile fwrite(oldName, CFile::modeCreate | CFile::modeWrite)
 char *pFileData = new char[10];
 memset(p_file, '/0', 10);
fwrite.Close();//需要先关闭
delete pFileData;
       pFileData = NULL;

try
{
// 这步很重要  网上有这样做的,但没说明,就没用(因为心想这个文件本来就没有,干嘛要删除)
CFile::Remove(newName);//为了方便偷懒就不判断文件是否存,直接删除
}

catch(CFileException *ex)
{//文件不存在会出现异常

 

}


CFile::Rename(oldName,newName);

 

 

/*

//网上有还种方法是:

 

 CString oldName  =  "test.txt";
 CString newName  =  "d://newTest.txt";

 

 

CFile::Rename(oldName, newName);

 

//就是把原始文件重命名后放到另外一个目录中。

///上面这种方法没试,感觉如果另外目录中已经包含了重命后的文件仍然可能会出现上面的问题

//有兴趣的朋友可以试一下,因为项目需要需当前文件重命名,不能改名后放到其他目录中。

 

 

*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值