您的位置:首页 > 编程语言 > C语言/C++

VC++6.0复制和删除指定的文件和文件夹

2012-06-10 00:00 453 查看
项目中一小段代码

//-------------------------------------------------
//	复制文件
//-------------------------------------------------
void CVideoDemoDlg::Copy_file()
{
TCHAR   path[200];
CString strSrcPath;
CString strDesPath;
//设置要复制的到文件夹路径
strDesPath = "E:\\";
//设置当前工作路径
SetCurrentDirectory("D:\\");
GetCurrentDirectory(200,path);
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
strSrcPath = "D:\\";
CString filename= finder.GetFileName();
//得到文件或文件夹名
if(filename==savanewfilename || filename == "." || filename == ".." || filename == "Recycled" || filename == "System Volume Information")
{   //对于文件系统提供的文件不fj
}
else
{
strSrcPath = strSrcPath + filename;
CopyDirectory(strSrcPath,strDesPath);
//复制目录
}
}
}

//-------------------------------------------------
//	供Copy_file()使用
//-------------------------------------------------
void CVideoDemoDlg::CopyDirectory(CString pTo,CString pFrom)
{
char   buf[1024];
char   buf1[1024];
SHFILEOPSTRUCT   fo;
memset(buf,0,sizeof(buf));
memset(buf1,0,sizeof(buf1));
memset(&fo,0,sizeof(fo));
strcpy(buf,pTo);
strcpy(buf1,pFrom);
fo.wFunc=FO_COPY;
//复制是FO_COPY,删除是FO_DELETE; 移动FO_MOVE
fo.pFrom=buf;
fo.pTo=buf1;
fo.fFlags=FOF_NOERRORUI|FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION;
SHFileOperation(&fo);
}
//-------------------------------------------------
//	删除文件
//-------------------------------------------------
void CVideoDemoDlg::Delete_file()
{
TCHAR   path[200];
SetCurrentDirectory("D:\\");
//设置当前目录
GetCurrentDirectory(200,path);
//得到当前目录路径
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
CString filename= finder.GetFileName();
//得到文件名
if(filename==savanewfilename || filename == "." || filename == ".."|| filename == "Recycled" || filename == "System Volume Information")
{
//如果是当前在存储的文件夹或根目录或上及目录以及磁盘回收站则不人任何处理
}
else
{
DeleteDirectory(filename);
//删除目录
}
}
}
//-------------------------------------------------
//	供Delete_file()调用
//-------------------------------------------------
BOOL CVideoDemoDlg::DeleteDirectory(LPCTSTR DirName)
{
CFileFind   tempFind;
char   tempFileFind[200];
sprintf(tempFileFind, "%s\\*.* ",DirName);
BOOL   IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
//判断文件夹
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
//寻找下一个目录
if(tempFileFind == str)
{
//如果等于当前正在存储的文件夹就不进行任保操作
}
if(!tempFind.IsDots())
{
char   foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
if(tempFind.IsDirectory())
{
char   tempDir[200];
sprintf(tempDir, "%s\\%s ",DirName,foundFileName);
DeleteDirectory(tempDir);
//删除文件夹
}
else
{
char   tempFileName[200];
sprintf(tempFileName, "%s\\%s ",DirName,foundFileName);
DeleteFile(tempFileName);
//删除文件
}
}
}
tempFind.Close();
//当寻找文件的事件结束就结束寻找功能
RemoveDirectory(DirName);
//删除这个目录
return   TRUE;
}

以上代码是用于文件复制和删除,但是其特殊性,是由其需求确认,正在写的当前文件不能复制和删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐