VC文件复制函数
时间:2010-11-19 来源:秩名
今天来学习VC文件操作。
新建一个类PubFun.cpp
头文件
#pragma once
//---------------------------------------------------------------------------------
//功能:复制文件
//参数:
//返回值:
//说明:
BOOL CommonCopyFile(CString SourceFileName, CString DestFileName);
大气象
#include "stdafx.h"
#include "PubFun.h"
BOOL CommonCopyFile(CString SourceFileName, CString DestFileName)
{
CFile sourceFile ;
CFile destFile ;
CFileException ex;
if (!sourceFile.Open((LPCTSTR)SourceFileName,CFile::modeRead | CFile::shareDenyWrite, &ex))
{
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
CString ErrorMsg = _T("打开文件:") ;
ErrorMsg += SourceFileName ;
ErrorMsg += _T("失败。\n错误信息为:\n") ;
ErrorMsg += szError ;
AfxMessageBox(ErrorMsg);
return FALSE ;
}
else
{
if (!destFile.Open((LPCTSTR)DestFileName, CFile::modeWrite | CFile::shareExclusive | CFile::modeCreate, &ex))
{
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
CString ErrorMsg = _T("创建文件:") ;
ErrorMsg += DestFileName ;
ErrorMsg += _T("失败。\n错误信息为:\n") ;
ErrorMsg += szError ;
AfxMessageBox(ErrorMsg);
sourceFile.Close();
return FALSE ;
}
BYTE buffer[4096];
DWORD dwRead;
do
{
dwRead = sourceFile.Read(buffer, 4096);
destFile.Write(buffer, dwRead);
}
while (dwRead > 0);
destFile.Close();
sourceFile.Close();
}
return TRUE ;
}
调用的时候不要忘了添加引用。
#include "PubFun.h"
//文件复制
CommonCopyFile(_T("C:\\test.txt"),_T("D:\\test.txt"));
参考更多:
总结一下SHFileOperation的用法,希望对大家有用
//删除文件或者文件夹
bool DeleteFile(char * lpszPath)
{
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags = FOF_ALLOWUNDO | //允许放回回收站
FOF_NOCONFIRMATION; //不出现确认对话框
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL; //一定要是NULL
FileOp.wFunc = FO_DELETE; //删除操作
return SHFileOperation(&FileOp) == 0;
}
//复制文件或文件夹
bool CopyFile(char *pTo,char *pFrom)
{
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags = FOF_NOCONFIRMATION| //不出现确认对话框
FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定
FileOp.pFrom = pFrom;
FileOp.pTo = pTo;
FileOp.wFunc = FO_COPY;
return SHFileOperation(&FileOp) == 0;
}
//移动文件或文件夹
bool MoveFile(char *pTo,char *pFrom)
{
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags = FOF_NOCONFIRMATION| //不出现确认对话框
FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定
FileOp.pFrom = pFrom;
FileOp.pTo = pTo;
FileOp.wFunc = FO_MOVE;
return SHFileOperation(&FileOp) == 0;
}
//从命名文件或文件夹
bool ReNameFile(char *pTo,char *pFrom)
{
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags = FOF_NOCONFIRMATION; //不出现确认对话框
FileOp.pFrom = pFrom;
FileOp.pTo = pTo;
FileOp.wFunc = FO_RENAME;
return SHFileOperation(&FileOp) == 0;
}
应用举例:
DeleteFile("d:\\PID\0\0"); //删除一个文件夹
DeleteFile("d:\\PID.dsp\0d:\\PID.dsw\0\0"); //删除多个文件
CopyFile("d:\0\0","D:\\MyProjects\\临时程序\0\0"); //把"临时程序"文件夹放到d盘下面
CopyFile("d:\0\0","D:\\MyProjects\\临时程序临时程序\\PID.dsw\0"); //把PID.dsp和PID.dsw俩个文件放到d盘下面
ReNameFile("d:\\NewName","d:\\PID\0\0"); \\把PID文件夹从命名为NewName
注意:,如果你想把"D:\\MyProjects\\临时程序\0\0"的文件夹复制到D盘下,并从命名为NewName,应该这样
CopyFile("d:\\NewName\0\0","D:\\MyProjects\\临时程序\\*.*\0\0"); //把"临时程序"文件夹复制到d盘下并从命名为"NewName"
下面这个类方便你复制多个文件或文件夹,仅作参考
//连接多个路径的类
class JOINFILEPATH
{
private:
int pos;
char* MultipleFilePath;
public:
JOINFILEPATH()
{
标签分类: VC