如何实现目录拷贝?

失落的羊 2006-12-27 09:46:49
如何实现目录拷贝,包括目录下面的子目录和所有文件,有没有代码参考?

void Copy(AnsiString a,AnsiString b)
{

}

a :源目录
b:目的目录

将a目录下所有文件(含子目录)拷贝到 b目录下,如果b目录已经存在,提示要不要覆盖,如何实现这样的功能?
...全文
252 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyaoxing 2006-12-28
  • 打赏
  • 举报
回复

BOOL __fastcall TForm1::copyDir(AnsiString source , AnsiString Destination)

{ TSearchRec sr;
AnsiString strDir;
AnsiString strFile;
AnsiString desFile;
int Attr = 0;
Attr|=faAnyFile;
int i = 1024;
if(Destination[Destination.Length()] != '\\')
{
Destination = Destination + "\\";
MkDir(Destination);
}
if(source[source.Length()] != '\\')
source = source + "\\";
if(FindFirst(source+"\\*.*",Attr,sr)==0)
{
do
{
if(sr.Name == "." || sr.Name == "..")
{

continue;
}
if(sr.Attr == faDirectory)

{
MkDir((Destination + sr.Name));
copyDir(source + sr.Name , Destination + sr.Name);
}

else
{
strFile=source+sr.Name;
desFile = Destination + sr.Name;
::CopyFile(strFile.c_str() , desFile.c_str(),true);
}
}while(FindNext(sr)== 0);

FindClose(sr);
}
return TRUE;

}
wood542344 2006-12-27
  • 打赏
  • 举报
回复
兄弟自己写吧。提示一下。第一递归,第二,用FindFirst,FindNext,FindClose.
这个应该不是很难的。
编译失败 2006-12-27
  • 打赏
  • 举报
回复
递归函数
jiangshx 2006-12-27
  • 打赏
  • 举报
回复
//下面这段代码修改一下就可以了



#define NO_WIN32_LEAN_AND_MEAN // +++
#include <vcl.h>

#pragma hdrstop
#include "Unit1.h"
#include "shlobj.h" // +++
。。。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ITEMIDLIST *pidl;
char soupath[MAX_PATH],tarpath[MAX_PATH];
memset(soupath,0,MAX_PATH);
SHGetSpecialFolderLocation(Application->Handle, CSIDL_FAVORITES, &pidl);
SHGetPathFromIDList(pidl,soupath);
ShowMessage("IE收藏夹路径"+soupath);
memset(tarpath,0,MAX_PATH);
strcpy(tarpath,DirectoryListBox1->Directory.c_str());
ShowMessage("目标文件夹路径:"+DirectoryListBox1->Directory);
ShowMessage("目标文件夹名称:"+DirectoryListBox1->Items->Strings[DirectoryListBox1->ItemIndex]+" -这个有点不太准");


SHFILEOPSTRUCT sfo;
sfo.hwnd = NULL;
sfo.wFunc = FO_COPY;
sfo.pFrom=soupath;
sfo.pTo=tarpath;
sfo.fFlags =FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR;
int hr=SHFileOperation(&sfo); //复制函数 - 使用这个函数时,soupath和 tarpath,都必须确定是以两个'\0'结尾,否则容易出错
if(hr==0){
ShowMessage("复制成功");
}
}
zyyoung 2006-12-27
  • 打赏
  • 举报
回复
xcopy .\test\*.* .\a\ /y
批处理好了

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧