文件拷贝
http://www.codeproject.com/Articles/6570/Copy-Move-and-Delete-files-and-directories-without
http://download.csdn.net/detail/career2011/3657624
SHCreateDirectoryEx(NULL,"E:\\Fun\\新建文件夹",NULL);
WIN32_FIND_DATA FindFileData;
HANDLE hFile = NULL;
stack<string> stkFilePath;
stkFilePath.push(m_strInput);
while (!stkFilePath.empty())
{
string filePath = stkFilePath.top();
stkFilePath.pop();
if (filePath.rfind('\\') != 0)
{
filePath.append("\\");
}
filePath.append("*.*");
hFile = ::FindFirstFile(filePath.c_str(),&FindFileData);
if (INVALID_HANDLE_VALUE == hFile)
{
continue;
}
do
{
if ( (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
!((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) ||
(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)))
{
if (0 == strcmp(FindFileData.cFileName, ".") ||
0 == strcmp(FindFileData.cFileName, ".."))
{
continue;
}
filePath = filePath.assign(filePath,0,filePath.rfind('\\'));
filePath = filePath + "\\" + FindFileData.cFileName;
string currPath = filePath.substr(m_strInput.length());
stkFilePath.push(filePath);
string strDst = m_strOutPut;
strDst.append(currPath);
if (!CreateDirectory(strDst.c_str(),NULL) && GetLastError() != 183)
{
continue;
}
}
else
{
filePath = filePath.assign(filePath,0,filePath.rfind('\\'));
filePath = filePath + "\\" + FindFileData.cFileName;
}
} while (FindNextFile(hFile, &FindFileData));
}