MFC中Copyfile的问题。

使用Copyfile拷贝文件目录,不成功。使用中断,检测到源路径和目的路径均存在。但却拷贝失败。使用GetLastError捕捉到的错误是说文件访问错误。进而知道文件目录... 使用Copyfile拷贝文件目录,不成功。使用中断,检测到源路径和目的路径均存在。但却拷贝失败。使用GetLastError捕捉到的错误是说文件访问错误。进而知道文件目录存在有只读属性。去除只读属性,重新运行程序,发现问题依旧如故,并且查看实际目录,发现源路径和目的路径的文件目录都给加上了只读属性(这里的属性不可能是其他地方加上去的)。
不知道这里是什么情况,我该怎么做才能拷贝文件夹成功呢?恳请达人指点一下,谢谢~
展开
 我来答
百度网友6b69700
2010-02-09 · TA获得超过411个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:200万
展开全部
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;

}
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
ˉ不迷女帝
2010-02-12
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
用copyfile要注意 两边的名字要一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
礼望亭逢裳
2019-07-03 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:26%
帮助的人:628万
展开全部
你的写法是不是有问题啊?试试仿照我这个写呢:
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goodczs
2010-02-08 · TA获得超过2118个赞
知道小有建树答主
回答量:2251
采纳率:0%
帮助的人:928万
展开全部
看MSDN
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式