首页 >> 文档 >> C/C++专题

C++实现文件拷贝的源代码

发布日期:2008-11-28最近更新:2008-11-28来源:BHCODE作者:
用C++些文件拷贝程序远远比我想象的要困难的多,和C#仅使用的File类和Directory类相比,直接操作windows api更加有趣。

.h文件

#pragma once
#include <string>
#include "file.h"
using namespace std;
namespace Common
{
namespace File
{
class SyncFolder : public Common::File::FileClass
{
private:
wstring m_sourceDirectory;
wstring m_targetDirectory;
const wstring * m_ext;
const bool * m_reverseExt;
protected:
void FileMethod(const wstring&);
public:
SyncFolder(const wstring &sourceDirectory, const wstring &targetDirectory,const wstring &ext, bool reverseExt):FileClass(),
m_sourceDirectory(Common::File::GetSecurePath(sourceDirectory)),m_targetDirectory(Common::File::GetSecurePath(targetDirectory))
{
m_ext = new wstring(ext);
m_reverseExt = new bool(reverseExt);
}
~SyncFolder(void)
{
delete m_ext;
delete m_reverseExt;
}
void Exec();
};
}
}

.cpp文件

#include "StdAfx.h"
#include "SyncFolder.h"
#include "File.h"
void Common::File::SyncFolder::Exec()
{
ReadFiles(m_sourceDirectory, *m_ext);
}
void Common::File::SyncFolder::FileMethod(const wstring& fileName)
{
//获取相对路径
wstring offsetPath =
Common::File::GetRelativePath(m_sourceDirectory,
Common::File::GetPathFromFilePath(fileName));
//获取新路径
wstring targetFilePath;
if(offsetPath.empty())
targetFilePath = m_targetDirectory;
else
targetFilePath = m_targetDirectory + L"" + offsetPath;
//创建文件夹
Common::File::CreatePath(targetFilePath);
//创建新文件路径
wstring newFileName = targetFilePath + L"" + Common::File::GetFileNameFromFilePath(fileName);
//复制文件
CopyFile(fileName.c_str(), newFileName.c_str(), true);
}

本周推荐
MORE
热点关注
MORE