您的位置:首页 > 其它

拷贝文件夹 删除文件夹

2009-12-31 16:14 183 查看
SHFileOperation删除和拷贝文件(夹)

BOOL
 DeleteFolder(
LPCTSTR lpszPath)
 

{
 

  SHFILEOPSTRUCT FileOp;
 

  ZeroMemory(
(
void
*
)
&
FileOp,
sizeof
(
SHFILEOPSTRUCT)
)
;

  FileOp.
fFlags =
 FOF_NOCONFIRMATION;
 

  FileOp.
hNameMappings =
 NULL
;
 

  FileOp.
hwnd =
 NULL
;
 

  FileOp.
lpszProgressTitle =
 NULL
;
 

  FileOp.
pFrom =
 lpszPath;
 

  FileOp.
pTo =
 NULL
;
 

  FileOp.
wFunc =
 FO_DELETE;
 

  return
 SHFileOperation(
&
FileOp)
 =
=
 0;    

}   // 这个函数可以删除目录(目录下的子目录和文件)


这是网上找的一段代码,但是在删除目录时总是说无法读取源文件或磁盘。但是目录确实存在。

查了查MSDN,网上看到别人也有同样的问题,看看他们的解答。原来SHFileOperation中的pFrom可以表示多个路径,各个路径之间以'/0'分隔,最后以'/0/0'(即连续的两个'/0')结束,

于是改了过来。可是还是不行。

去掉路径最后的一个'/'("c://data//"改为"c://data"),成功。

 下面这个函数需要注意同样的问题。

BOOL
 CopyFolder(
LPCTSTR lpszFromPath,
LPCTSTR lpszToPath)

{

    SHFILEOPSTRUCT FileOp;
 

    ZeroMemory(
(
void
*
)
&
FileOp,
sizeof
(
SHFILEOPSTRUCT)
)
;

    

    FileOp.
fFlags =
 FOF_NOCONFIRMATION ;
 

    FileOp.
hNameMappings =
 NULL
;
 

    FileOp.
hwnd =
 NULL
;
 

    FileOp.
lpszProgressTitle =
 NULL
;
 

    FileOp.
pFrom =
 lpszFromPath;
 

    FileOp.
pTo =
 lpszToPath;
 

    FileOp.
wFunc =
 FO_COPY;
 

    

    return
 SHFileOperation(
&
FileOp)
 =
=
 0;

} // lpszFromPath指示源文件夹 lpszToPath是目的目录, 函数会在lpszToPath文件夹下新建一个文件夹(与源文件夹同名),


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐