C++文件夹操作
2011-05-11 17:21
155 查看
学习了一下SHFileOperation函数的使用,用于对文件夹进行复制、重命名。
看到有些人用FindFile()、FindNextFile()这样的API自己来实现一个复制函数,感觉有现成的API就懒得另外写一个稳定性不确定的函数了。
/*
@brief 移动原文件夹及其中文件都指定的路径下
@param[in] lpszFromPath 源文件夹路径
@param[in] lpszToPath 目的文件夹路径
@return 移动是否成功
*/
static BOOL MoveFolder(CString strFromPath, CString strToPath)
{
int nLengthFrm = strFromPath.GetLength();
char *NewPathFrm = new char[nLengthFrm+2];
strncpy_s(NewPathFrm, nLengthFrm+2, strFromPath, nLengthFrm);
NewPathFrm[nLengthFrm] = '/0';
NewPathFrm[nLengthFrm+1] = '/0';
SHFILEOPSTRUCT FileOp;
ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = NewPathFrm;
FileOp.pTo = strToPath;
FileOp.wFunc = FO_MOVE;
return SHFileOperation(&FileOp) == 0;
}
/*
@brief 修改原文件夹的名字
@param[in] lpszFromPath 源文件夹路径
@param[in] lpszToPath 目的文件夹路径
@return 修改是否成功
*/
static BOOL ReNameFolder(CString strFromPath, CString strToPath)
{
int nLengthFrm = strFromPath.GetLength();
char *NewPathFrm = new char[nLengthFrm+2];
strncpy_s(NewPathFrm, nLengthFrm+2, strFromPath, nLengthFrm);
NewPathFrm[nLengthFrm] = '/0';
NewPathFrm[nLengthFrm+1] = '/0';
SHFILEOPSTRUCT FileOp;
ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = NewPathFrm;
FileOp.pTo = strToPath;
FileOp.wFunc = FO_RENAME;
return SHFileOperation(&FileOp) == 0;
}
看到有些人用FindFile()、FindNextFile()这样的API自己来实现一个复制函数,感觉有现成的API就懒得另外写一个稳定性不确定的函数了。
/*
@brief 移动原文件夹及其中文件都指定的路径下
@param[in] lpszFromPath 源文件夹路径
@param[in] lpszToPath 目的文件夹路径
@return 移动是否成功
*/
static BOOL MoveFolder(CString strFromPath, CString strToPath)
{
int nLengthFrm = strFromPath.GetLength();
char *NewPathFrm = new char[nLengthFrm+2];
strncpy_s(NewPathFrm, nLengthFrm+2, strFromPath, nLengthFrm);
NewPathFrm[nLengthFrm] = '/0';
NewPathFrm[nLengthFrm+1] = '/0';
SHFILEOPSTRUCT FileOp;
ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = NewPathFrm;
FileOp.pTo = strToPath;
FileOp.wFunc = FO_MOVE;
return SHFileOperation(&FileOp) == 0;
}
/*
@brief 修改原文件夹的名字
@param[in] lpszFromPath 源文件夹路径
@param[in] lpszToPath 目的文件夹路径
@return 修改是否成功
*/
static BOOL ReNameFolder(CString strFromPath, CString strToPath)
{
int nLengthFrm = strFromPath.GetLength();
char *NewPathFrm = new char[nLengthFrm+2];
strncpy_s(NewPathFrm, nLengthFrm+2, strFromPath, nLengthFrm);
NewPathFrm[nLengthFrm] = '/0';
NewPathFrm[nLengthFrm+1] = '/0';
SHFILEOPSTRUCT FileOp;
ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = NewPathFrm;
FileOp.pTo = strToPath;
FileOp.wFunc = FO_RENAME;
return SHFileOperation(&FileOp) == 0;
}
相关文章推荐
- C++ 遍历指定文件夹~相应操作
- C、C++创建和删除文件夹操作
- C/C++创建和删除文件夹操作(对单个文件夹进行操作)
- C++ 操作DOS命令(删除某个路径下文件夹)
- [C++]文件/文件夹的创建和删除操作
- C++_SHFileOperation文件夹操作
- C/C++中关于遍历文件夹的操作
- C++ 文件夹的一些操作
- C++ 对文件夹的安全权限操作
- C++中读入一个文件夹下多个文件的数据操作(文件夹遍历)
- windows c++ 修改用户的文件夹操作权限
- c++关于文件夹(文件)的相关操作_findfirst,_findnext和_findclose方法
- c++文件夹操作
- C/C++创建和删除文件夹操作
- C/C++创建和删除文件夹操作
- C++ 文件及文件夹操作(二)
- C/C++创建和删除文件夹操作
- C/C++文件夹 的操作
- C++ MFC 操作文件夹及属性(新建,删除[包含子文件[夹]],剪切,复制,重命名)
- 【C/C++】文件夹的打开、遍历、删除、创建、关闭操作汇总