求教:一个关于读写文件的问题! 1.请问如何新建一个目录.2.如何把一个文件夹从一个目录下移动或拷贝到另一个文件夹中.保证两天内散分结帖,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2:SetCurrentDirectory("yourDir");CopyFile("sourceFile","dFile",false);//false或者true是决定是否覆盖重名文件的 2:或者这样:SHFILEOPSTRUCT shfile; shfile.hwnd = this->m_hWnd; shfile.wFunc = FO_MOVE; shfile.pFrom = "c:\\dir1"; shfile.pTo = "c:\\dir2"; shfile.fFlags = FOF_RENAMEONCOLLISION|FOF_SILENT; shfile.fAnyOperationsAborted = false; ::SHFileOperation(&shfile); CreateDirectory,CopyFile应该就可以搞定了 简单点就用ShellExecute比如2:ShellExecute(NULL, "copy c:\\dir1 c:\\dir2\\", NULL, ... 新建目录用CreateDirectory,移动文件用MoveFile,copy文件用CopyFile以上函数都是API函数,具体细节详情请见msdn 补充一下:如果是移动这样:MoveFile("ExistingFileName","NewFileName");当然移动也可以这样做先copyfile到新文件再deletefile原文件 1 CreateDirectory("c:\\1",NULL);//在c盘建文件夹1,2 SetCurrentDirectory("c;\\1");CopyFile("sourceFile","dFile",false);//false或者true是决定是否覆盖重名文件的,把sourceFile copy到dFile。 /*函数:文件移动、拷贝shell操作*/void CIPPhoneDlg::OnSaveOp(BOOL m_bSorC){ CString m_strRDir; LPMALLOC pMalloc; BROWSEINFO bi; CString pszTemp; if(SUCCEEDED(SHGetMalloc(&pMalloc))) { ZeroMemory(&bi,sizeof(bi)); char pszDirName[MAX_PATH]; LPITEMIDLIST pidl; bi.hwndOwner = ::AfxGetMainWnd()->GetSafeHwnd(); bi.pidlRoot = NULL; bi.pszDisplayName = pszDirName; bi.lpszTitle = _T("选择保存的目录"); bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; if((pidl = ::SHBrowseForFolder(&bi)) != NULL) { if (::SHGetPathFromIDList(pidl, pszDirName)) { pszTemp=pszDirName; } pMalloc->Free(pidl); } pMalloc->Release(); } ///////////////////////////////////////////////////// SHFILEOPSTRUCT lpFileOp; lpFileOp.hwnd=::AfxGetMainWnd()->GetSafeHwnd(); if(m_bSorC) { lpFileOp.wFunc=FO_COPY; } else { lpFileOp.wFunc=FO_MOVE; } for(int ii=0;ii<m_listVMB.GetItemCount();ii++) { int iState; iState=m_listVMB.GetItemState(ii,LVIS_SELECTED); if(iState!=0) { CString str; str=m_listVMB.GetItemText(ii,2); str.Replace(":","_"); str+=".wav"; CString path=m_strWorkPath+"vmailbox\\"; path+=str; str=path; char dir[256]; sprintf(dir,"%s%c",str,NULL); lpFileOp.pFrom=dir; lpFileOp.pTo=pszTemp; lpFileOp.fFlags=FOF_ALLOWUNDO; lpFileOp.fAnyOperationsAborted=TRUE; lpFileOp.hNameMappings=NULL; lpFileOp.lpszProgressTitle=NULL; int rval=SHFileOperation(&lpFileOp); if(rval==0) { if(lpFileOp.fAnyOperationsAborted==TRUE) { MessageBox("已经取消了操作","提示信息",MB_OK); } } } }} avast的界面是怎么怎样做出来的 一个按钮显示两张图片的问题 文件夹路径选择的问题 怎么获取本机的外网ip 关于Winsocket event i/o 模型问题, 高手请进 编写windows下服务程序,使用csocket的问题 调整列宽度的时候 可产生什么消息 IP报头中的服务类型如何分类啊?? 判断变量类型? 请问有谁知道怎么安装DirectX 输出字符的问题? 如何在窗口中画一矩形,用键盘上的up\down\right\left控制矩形的运动,(使用WIN32编程)
CopyFile("sourceFile","dFile",false);//false或者true是决定是否覆盖重名文件的
或者这样:
SHFILEOPSTRUCT shfile;
shfile.hwnd = this->m_hWnd;
shfile.wFunc = FO_MOVE;
shfile.pFrom = "c:\\dir1";
shfile.pTo = "c:\\dir2";
shfile.fFlags = FOF_RENAMEONCOLLISION|FOF_SILENT;
shfile.fAnyOperationsAborted = false;
::SHFileOperation(&shfile);
ShellExecute(NULL, "copy c:\\dir1 c:\\dir2\\", NULL, ...
以上函数都是API函数,具体细节详情请见msdn
如果是移动这样:
MoveFile("ExistingFileName","NewFileName");
当然移动也可以这样做先copyfile到新文件再deletefile原文件
2 SetCurrentDirectory("c;\\1");
CopyFile("sourceFile","dFile",false);//false或者true是决定是否覆盖重名文件的,把sourceFile copy到dFile。
函数:文件移动、拷贝shell操作
*/
void CIPPhoneDlg::OnSaveOp(BOOL m_bSorC)
{
CString m_strRDir;
LPMALLOC pMalloc;
BROWSEINFO bi;
CString pszTemp;
if(SUCCEEDED(SHGetMalloc(&pMalloc)))
{
ZeroMemory(&bi,sizeof(bi));
char pszDirName[MAX_PATH];
LPITEMIDLIST pidl;
bi.hwndOwner = ::AfxGetMainWnd()->GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = pszDirName;
bi.lpszTitle = _T("选择保存的目录");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
if((pidl = ::SHBrowseForFolder(&bi)) != NULL)
{
if (::SHGetPathFromIDList(pidl, pszDirName))
{
pszTemp=pszDirName;
}
pMalloc->Free(pidl);
}
pMalloc->Release();
}
/////////////////////////////////////////////////////
SHFILEOPSTRUCT lpFileOp;
lpFileOp.hwnd=::AfxGetMainWnd()->GetSafeHwnd();
if(m_bSorC)
{
lpFileOp.wFunc=FO_COPY;
}
else
{
lpFileOp.wFunc=FO_MOVE;
}
for(int ii=0;ii<m_listVMB.GetItemCount();ii++)
{ int iState;
iState=m_listVMB.GetItemState(ii,LVIS_SELECTED);
if(iState!=0)
{
CString str;
str=m_listVMB.GetItemText(ii,2);
str.Replace(":","_");
str+=".wav";
CString path=m_strWorkPath+"vmailbox\\";
path+=str;
str=path;
char dir[256];
sprintf(dir,"%s%c",str,NULL);
lpFileOp.pFrom=dir;
lpFileOp.pTo=pszTemp;
lpFileOp.fFlags=FOF_ALLOWUNDO;
lpFileOp.fAnyOperationsAborted=TRUE;
lpFileOp.hNameMappings=NULL;
lpFileOp.lpszProgressTitle=NULL;
int rval=SHFileOperation(&lpFileOp);
if(rval==0)
{
if(lpFileOp.fAnyOperationsAborted==TRUE)
{
MessageBox("已经取消了操作","提示信息",MB_OK);
}
}
}
}
}