如何将文件从文件夹复制到另一个文件夹
How to copy a file from a folder to another folder
如何使用C++将文件从一个文件夹复制到另一个文件夹?
使用来自C++17:的std::filesystem::copy_file
#include <exception>
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
fs::path sourceFile = "path/to/sourceFile.ext";
fs::path targetParent = "path/to/target";
auto target = targetParent / sourceFile.filename(); // sourceFile.filename() returns "sourceFile.ext".
try // If you want to avoid exception handling, then use the error code overload of the following functions.
{
fs::create_directories(targetParent); // Recursively create target directory if not existing.
fs::copy_file(sourceFile, target, fs::copy_options::overwrite_existing);
}
catch (std::exception& e) // Not using fs::filesystem_error since std::bad_alloc can throw too.
{
std::cout << e.what();
}
}
我已经使用std::filesystem::path::filename
来检索源文件名,而不必手动键入。但是,使用std::filesystem::copy
,您可以完全忽略将文件名传递到目标路径:
fs::copy(sourceFile, targetParent, fs::copy_options::overwrite_existing);
使用std::filesystem::copy_options
更改两个函数的行为。
这应该是所需的最小代码:
#include <fstream>
// copy in binary mode
bool copyFile(const char *SRC, const char* DEST)
{
std::ifstream src(SRC, std::ios::binary);
std::ofstream dest(DEST, std::ios::binary);
dest << src.rdbuf();
return src && dest;
}
int main(int argc, char *argv[])
{
return copyFile(argv[1], argv[2]) ? 0 : 1;
}
它掩盖了一些潜在的复杂问题:错误处理、文件名字符编码。。。但可以给你一个开始。
如果您愿意使用Boost C++库,请查看文件系统::copy_file()。
这是之前关于copy_file()的一个问题:
如何在boost::filesystem中使用copy_file?
这就是您可以做到的。
-
包括c++库
<windows.h>
-
使用功能
CopyFile("d:/folder1/file.exe","d:/folder2/file.exe",true)
-
全部完成:)
下面的代码将把所有文件从一个目录复制到另一个目录。
它在C++中的工作代码
#include <windows.h>
/*
BOOL Copy(char r_szPath[1024], char r_szDir[1024])
{
char l_szTemp[2048] = {0};
sprintf(l_szTemp,"%s%s"r_szPath,r_szDir);
if(IsDirectory(
}*/
#include <stdio.h>
#include<conio.h>
BOOL __Copy(char r_szSrcPath[1024],char r_szDesPath[1024])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char l_szTmp[1025] = {0};
memcpy(l_szTmp,r_szSrcPath,1024);
char l_szSrcPath[1025] = {0};
char l_szDesPath[1025] = {0};
memcpy(l_szSrcPath,r_szSrcPath,1024);
memcpy(l_szDesPath,r_szDesPath,1024);
char l_szNewSrcPath[1025] = {0};
char l_szNewDesPath[1025] = {0};
strcat(l_szTmp,"*");
hFind = FindFirstFile(l_szTmp, &FindFileData);
if(hFind == NULL) return FALSE;
do
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(strcmp(FindFileData.cFileName,"."))
{
if(strcmp(FindFileData.cFileName,".."))
{
printf ("The Directory found is %s<BR>, FindFileData.cFileName);
sprintf(l_szNewDesPath,"%s%s",l_szDesPath,FindFileData.cFileName);
sprintf(l_szNewSrcPath,"%s%s",l_szSrcPath,FindFileData.cFileName);
CreateDirectory(l_szNewDesPath,NULL);
__Copy(l_szNewSrcPath,l_szNewDesPath);
}
}
}
else
{
printf ("The File found is %s<BR>, FindFileData.cFileName);
char l_szSrcFile[1025] = {0};
char l_szDesFile[1025] = {0};
sprintf(l_szDesFile,"%s%s",l_szDesPath,FindFileData.cFileName);
sprintf(l_szSrcFile,"%s%s",l_szSrcPath,FindFileData.cFileName);
BOOL l_bRet = CopyFile(l_szSrcFile,l_szDesFile,TRUE);
}
}
while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
return TRUE;
}
int main(int argc, char *argv[])
{
__Copy("C:fcdb","E:sandy");
getch();
return 0;
}
相关文章:
- 如何将更多文件夹添加到c++include路径
- 介子复制/安装头文件到输出目录并保持文件夹结构
- 从 QProcess 复制文件夹的内容
- 我无法复制带有C++的文件夹中的所有文件
- 使用boost递归地将给定目录中每个最低级别文件夹的文件复制到另一个目录-C++
- XCOPY Dos命令从子文件夹复制
- 卸载程序不会删除复制到VS2010安装程序项目中的系统文件夹。
- 如何在Program Files文件夹中复制文件或文件夹
- 如何使Visual Studio将所需的.dll文件复制到发布文件夹中
- C++/CLI:文件系统观察器移动或复制非空文件夹
- VS 2010 中 win32 应用程序中的文件夹复制
- 如何使用 CopyFile 将特定类型的文件从一个文件夹复制到另一个文件夹
- 如何设置Visual C++2010学习版以在生成过程中复制某些文件夹
- 在windows资源管理器中复制文件夹
- 使用QuaZIP将文件夹和内容从zip内部复制到另一个位置?
- 如何将文件从文件夹复制到另一个文件夹
- 在c++中使用Octave库(dll等)而不安装Octave(只是复制安装文件夹)
- 如何在一个文件夹中复制大量或小尺寸的文件
- SHFileOperation使用字符串复制文件夹
- 如何判断文件夹是否是递归文件夹复制的子文件夹