如果源文件不存在
复制成功
#include <iostream>
#include <fstream>
#include <io.h>
#include <sys/stat.h>
//判断是否是一个文件
bool isValid(const char* szFile)
{
if (0 == _access(szFile, 00))
{
struct _stat buf_stat;
int result = _stat(szFile, &buf_stat);
if (result == 0)
{
if (_S_IFREG & buf_stat.st_mode) {
std::cout << "This is a file: " << szFile << std::endl;
return true;
}
else if (_S_IFDIR & buf_stat.st_mode) {
std::cout << "This is a folder: " << szFile << std::endl;
}
}
}
return false;
}
bool copyFile(const char* szSrcFile, const char* szDstFile)
{
if (!isValid(szSrcFile))
{
std::cout << "Src file is not exist: " << szSrcFile << std::endl;
return false;
}
if (isValid(szDstFile))
{
std::cout << "Dst file is exist: " << szDstFile << std::endl;
return false;
}
std::ifstream in;
in.open(szSrcFile, std::ios_base::binary);
if (!in.is_open())
{
std::cout << "Open src file failed: " << szSrcFile << std::endl;
return false;
}
std::ofstream out;
out.open(szDstFile, std::ios_base::binary | std::ios_base::trunc);
if (!out.is_open())
{
std::cout << "Create dst file failed: " << szDstFile << std::endl;
in.close();
return false;
}
out << in.rdbuf();
out.close();
in.close();
return true;
}
int main(int argc, char *argv[])
{
bool ret = copyFile("D:\\test.txt", "D:\\test2.bat");
if (ret)
{
std::cout << "Copy succeed!" << std::endl;
}
else
{
std::cout << "Copy failed!" << std::endl;
}
return 0;
}