MFC中Copyfile的问题。
使用Copyfile拷贝文件目录,不成功。使用中断,检测到源路径和目的路径均存在。但却拷贝失败。使用GetLastError捕捉到的错误是说文件访问错误。进而知道文件目录...
使用Copyfile拷贝文件目录,不成功。使用中断,检测到源路径和目的路径均存在。但却拷贝失败。使用GetLastError捕捉到的错误是说文件访问错误。进而知道文件目录存在有只读属性。去除只读属性,重新运行程序,发现问题依旧如故,并且查看实际目录,发现源路径和目的路径的文件目录都给加上了只读属性(这里的属性不可能是其他地方加上去的)。
不知道这里是什么情况,我该怎么做才能拷贝文件夹成功呢?恳请达人指点一下,谢谢~ 展开
不知道这里是什么情况,我该怎么做才能拷贝文件夹成功呢?恳请达人指点一下,谢谢~ 展开
展开全部
1.不信你可以看看,系统里的所有文件夹都是只读属性,这个没关系;
2.CopyFile只能拷贝文件,不能拷贝文件夹;
3.若要拷贝文件夹,可参考如下方法:
BOOL CCheckFileDlg::CopyDir(CString strSrcPath, CString strDstPath)
{ // 创建目标文件夹
CreateDirectory(strDstPath,NULL);
CFileFind finder;
// 打开指定的文件夹进行搜索
BOOL bWorking = finder.FindFile(strSrcPath + "\\" + "*.*");
while(bWorking)
{
// 从当前目录搜索文件
bWorking = finder.FindNextFile();
CString strFileName = finder.GetFileName();
CString strSrc = strSrcPath + "\\" + strFileName;
CString strDst = strDstPath + "\\" + strFileName;
// 判断搜索到的是不是"."和".."目录
if(!finder.IsDots())
{
// 判断搜索到的目录是否是文件夹
if(finder.IsDirectory())
{
// 如果是文件夹的话,进行递归
if(!CopyDir(strSrc, strDst))
return false;
}
else
{
// 如果是文件,进行复制
if(!CopyFile(strSrc, strDst, FALSE))
return false;
}
}
}
return true;
}
2.CopyFile只能拷贝文件,不能拷贝文件夹;
3.若要拷贝文件夹,可参考如下方法:
BOOL CCheckFileDlg::CopyDir(CString strSrcPath, CString strDstPath)
{ // 创建目标文件夹
CreateDirectory(strDstPath,NULL);
CFileFind finder;
// 打开指定的文件夹进行搜索
BOOL bWorking = finder.FindFile(strSrcPath + "\\" + "*.*");
while(bWorking)
{
// 从当前目录搜索文件
bWorking = finder.FindNextFile();
CString strFileName = finder.GetFileName();
CString strSrc = strSrcPath + "\\" + strFileName;
CString strDst = strDstPath + "\\" + strFileName;
// 判断搜索到的是不是"."和".."目录
if(!finder.IsDots())
{
// 判断搜索到的目录是否是文件夹
if(finder.IsDirectory())
{
// 如果是文件夹的话,进行递归
if(!CopyDir(strSrc, strDst))
return false;
}
else
{
// 如果是文件,进行复制
if(!CopyFile(strSrc, strDst, FALSE))
return false;
}
}
}
return true;
}
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
展开全部
用copyfile要注意 两边的名字要一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的写法是不是有问题啊?试试仿照我这个写呢:
cfiledialog
dlg(true);//
true为open对话框,false
为
save
as
对换框
if(dlg.domodal()==idok)
{
cstring
str=dlg.getpathname();
messagebox(l"选择保存的路径是:"
+
str);
}
这是令一个方法,也拿去试试。
我直接把自己的代码贴过来了,没有怎么改,相信你能看得懂,知道哪些有用,哪些没用,偷个小懒,嘿嘿!
browseinfo
bbinfo;
memset(&bbinfo,0,sizeof(browseinfo));//
定义结构并初始化
tchar
strtmp[255];
lpitemidlist
lpdlist;
bbinfo.hwndowner
=
m_hwnd;//
设置对话框所有者句柄
bbinfo.lpsztitle
=
l"请选择拷贝的源路径:";
bbinfo.ulflags
=
bif_returnonlyfsdirs;//
设置标志只允许选择目录
//
用来保存返回信息的idlist,使用shgetpathfromidlist函数转换为字符串
lpdlist
=
shbrowseforfolder(&bbinfo);//
显示选择对话框
if
(lpdlist
!=
null)
{
shgetpathfromidlist(lpdlist,strtmp);//
把项目标识列表转化成目录
trace(strtmp);
m_strfrompath
=
strtmp;
updatedata(false);
}
cfiledialog
dlg(true);//
true为open对话框,false
为
save
as
对换框
if(dlg.domodal()==idok)
{
cstring
str=dlg.getpathname();
messagebox(l"选择保存的路径是:"
+
str);
}
这是令一个方法,也拿去试试。
我直接把自己的代码贴过来了,没有怎么改,相信你能看得懂,知道哪些有用,哪些没用,偷个小懒,嘿嘿!
browseinfo
bbinfo;
memset(&bbinfo,0,sizeof(browseinfo));//
定义结构并初始化
tchar
strtmp[255];
lpitemidlist
lpdlist;
bbinfo.hwndowner
=
m_hwnd;//
设置对话框所有者句柄
bbinfo.lpsztitle
=
l"请选择拷贝的源路径:";
bbinfo.ulflags
=
bif_returnonlyfsdirs;//
设置标志只允许选择目录
//
用来保存返回信息的idlist,使用shgetpathfromidlist函数转换为字符串
lpdlist
=
shbrowseforfolder(&bbinfo);//
显示选择对话框
if
(lpdlist
!=
null)
{
shgetpathfromidlist(lpdlist,strtmp);//
把项目标识列表转化成目录
trace(strtmp);
m_strfrompath
=
strtmp;
updatedata(false);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看MSDN
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询