调用filesystem库的rename()方法,用于移动或重命名文件。这里用其移动的功能。
仅仅把一个文件移动另一个文件夹,名称不变
#include <filesystem>
bool radar_analysis::move_file(std::string old_path_and_file_name, std::string new_path)
std::filesystem::path file_old_path(old_path_and_file_name);
string file_name = file_old_path.filename().string();
std::string resule_path = new_path + file_name;
std::error_code ec;
std::filesystem::rename(old_path_and_file_name, resule_path, ec);
if (ec)
return false;
return true;
int main()
std::string old_path = "./a.txt";
std::string new_path = "../code/";
move_file(old_path , new_path );
说明:C++访问文件夹中的内容没有python方便,这里做一下记录,提供实现数据从一个文件夹转移到另一个文件夹的接口。
应用场景:批量跑数据时,为了不在内部接口中输入当前数据的路径,避免层层传参数的麻烦,只在最里面的接口建一个临时文件夹,保存中间生成的文件,最后跳出最外层接口时,将临时文件夹里的内容全部复制到当前数据的路径下。
//将临时文件夹里的文件全部复制到相应数据的文件夹下面,并对临时文件夹进行清空处理,为下一套数据腾地方
void copy_file()
std::string s
,最近正好又需要这样的功能,而且还增加了一个需求,希望能够记录移动的具体内容,并且能够根据记录实现恢复功能,这个实现起来没什么难度,唯一需要注意的是,记录需要加锁,并且考虑到程序崩溃等问题,需要将每次成功或者失败记录即时写入文件,而不能在程序结束时写入,否则程序一旦崩溃,所有的移动记录将丢失。于是我写了一个类,实现了文件和目录的移动,纯c++实现,可以记录移动过程,也有恢复功能呢,可以指定记录的文件名,默认为"restore.log"。注意,部分函数需要另外实现,实现起来也不难,欢迎交流与讨论。
虽然c++学的很菜,但是还是得想办法用起来。这里我们将某一个目录下的所有图片文件移动到自己指定的另一个目录下,同理移动其他类型的文件可以更改一下文件后缀即可。
笔者将整个过程分成了两步:收集目录下的满足后缀条件的文件路径和移动文件到目标路径下。这里用的是标准库filesystem,代码也比较简单。
要求将一个文件夹下对应的所查找的目标文本移动到另一个文件夹下,采用MoveFile函数即可完成转移操作。
如下是一个项目中所用的示例,可供参考:
void CTestBootDlg::RemoveFileToOtherPath(const int iSlot,const char* path)
CFileFind finder;
char szOldTextPath[MAX_PAT
#include <windows.h>
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow)
// 变量初始化
LPCTSTR ExistFile = _T("D:\\File.txt");
LPCTSTR NewFile = _T("D.
由于今天使用windows提供的 MoveFile 移动文件出现问题,特此总结。
MoveFile
这是windows提供的一个API。用法比较简单,并且可以移动文件夹下面子文件。
//将C盘中的test文本移动到D盘
MoveFile("C:\\test.txt", "D:\\test.txt");
BOOL MoveFile(
LPCTSTR lpExistingFileN...
inline bool isSpecialDir(const char *path)
return strcmp(path, "..") == 0 || strcmp(path, ".") == 0;
bool moveDir(const _tstring& srcPath, const _tstring& dstPath)