当一个文件被fopen打开的时候,对它进行rename或者DeleteFile会失败,这是正常的。但是,当一个文件没被任何程序或者用户操作的时候,这时候,对它进行rename或者DeleteFile也会失败,
我这里的情况是rename失败了,为什么会出现这种情况,在这种情况下想rename成功改怎样呢?是不是当时磁盘操作正忙?
是不是可以用个while循环对它进行操作,直到操作成功。(当然这个while的循环次数肯定是有限的,而且每次都有一个简短的间隔!)
上面滴疑问,大家帮忙知道一下,谢谢啦!

解决方案 »

  1.   

    是自己的代码创建的文件,而且大多数情况下文件都是可以rename的,只有一次rename失败了,不知道是为什么。怀疑当时是不是磁盘操作忒忙了?
      

  2.   

    不是磁盘操作太忙了。是你准备rename的时候系统还没有真正释放掉对文件的引用,虽然你的代码已经关闭了文件。
      

  3.   

    DWORD dwError = GetLastError();1.调试查看返回值。
    2.vs-工具-错误查找
    看看是什么错
      

  4.   

    那这种情况怎么解决呢 我也遇到了类似的问题 我是更改文件的内容 。
    打印文件和保存文件的函数在同一个文件里面,这个时候先调用打印再保存 再打印 可以显示出保存的内容成功。
    但是当另一个文件的函数调用的时候就不对了,我是用命令行进行配置需要更改的东西,就像这样的:
    --name=abc --age=23 --print --save --print 这样写的时候最终打印的还是原来的文件。print里面和save里面都 fclose了 save里面用的是先建立一个临时文件 将临时文件直接保存成原来的文件名。
    如果我的命令行这样写:--name=abc --age=23 --save -print (注:调用save前不调用print)这样我最后打印出来的就是改后的文件了