慢慢地发现自己对文件夹的处理熟较多。
对文件的处理莫过于:拷贝,删除,移动
下面就说方法:
第一:借用命令行xcopy来实现整个目录树的操作。
第二:windows API Directory类和File类
第三:shell函数HFileOperation
// TestXCopy.cpp : 定义控制台应用程序的入口点。
//
#include "StdAfx.h"
#include <iostream>
#include <windows.h>
#include <ShellAPI.h>
using namespace std;
#pragma comment(lib,"Shell32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
SHFILEOPSTRUCT FileOp;
ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));
FileOp.hwnd = NULL; //父窗口句柄
FileOp.wFunc = FO_COPY; //要执行的动作
FileOp.pFrom = L"C:\\Users"; //源文件路径,可以是多个文件
FileOp.pTo = L"D:\\***"; //目标路径
FileOp.fFlags = FOF_SIMPLEPROGRESS; //标志,附加选项
FileOp.fAnyOperationsAborted = true; //是否可被中断
FileOp.hNameMappings = NULL; //文件映射名字
FileOp.lpszProgressTitle = NULL; //只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。
SHFileOperation(&FileOp);
return 0;
}
可是对文件夹的操作最大的软肋就是目录树的路径太深。通过xcopy命令行目录树过深时会提示:“内存不足”的错误
可是通过文件夹映射的办法来解决,目录树过深的缺陷。