我需要将文件夹从一个位置剪切到另一个位置(相同盘符下),要的效果是和windows的文件夹剪切一样,文件夹下的文件不存在则粘贴,存在则覆盖。所有我将MoveFileEx函数的第三个参数设为MOVEFILE_REPLACE_EXISTING,当待移动路径不存在时,剪切成功;存在时,剪切失败,返回错误码5。
求大神指点,怎么才能达到我想要的剪切效果,谢谢

解决方案 »

  1.   

    目标路径在哪啊,要保证那个路径你能创建文件,5是拒绝访问的错误码,你可以先用DeleteFile(目标路径),然后再剪切
      

  2.   

    不是在第三个参数可设定的吗?TRUE  OR FALSE
      

  3.   

    目标文件夹里有不能删除的文件,怎么才能像windows的文件夹剪切一样,目标文件夹下不存在该文件则粘贴,存在则覆盖,其他的文件没影响?
      

  4.   

    目标文件夹里有不能删除的文件,怎么才能像windows的文件夹剪切一样,目标文件夹下不存在该文件则粘贴,存在则覆盖,其他的文件没影响?
      

  5.   

    5 Access is denied.  ERROR_ACCESS_DENIED 
    你这是权限不够造成的、、、
      

  6.   

    我用的是管理员身份打开的呀,MSDN上说了MoveFileEx可以移动文件夹的,不然我就不偷这个懒了,直接遍历文件夹,一个一个移动
      

  7.   

    还有这个
    When moving a directory, the destination must be on the same drive
    如果移动目录,目标必须在同一个驱动器上
      

  8.   

    还有这个
    MOVEFILE_REPLACE_EXISTING:If a file named lpNewFileName exists, the function replaces its contents with the contents of the lpExistingFileName file. 
    This value cannot be used if lpNewFileName or lpExistingFileName names a directory.
    意思是 MOVEFILE_REPLACE_EXISTING标记不能用于目录,楼主看MSDN不要只看一半啊
     
      

  9.   

    lZ在看msdn时,还是要注意函数的特殊情况啊
      

  10.   

    已经解决了,看来偷懒还是不行的,一个接口MoveFileEx满足不了需求,最后还是递归遍历整个文件夹,忘了结贴,回来补一个