关于用CFILE类拷贝文件的疑问

wx3046 2009-10-22 10:01:40


这段代码是用来拷贝文件的,dir这个参数是一个盘符名称

我的疑问是为什么调用IsDosts()函数,msdn上说这个函数是判断文件名是否含有"."或者"..",如果有则说明此文件是一个目录,那么如果类似a.exe,b.doc这类文件是不是被当做目录了?

还有,即使是正好不是a.exe,b.doc这类文件,而是目录,那么为什么下面还要调用IsDirectory()来判断文件是不是目录了?
请指教,谢谢。我看了很多代码,都是这么写的,有点不明白原因

void CFDiskThiefDlg::CopyFile(CString dir)
{
CFileFind tempFind;
CString tempFileFind;
tempFileFind.Format("%s\\*.*",dir);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
CString foundFileName;
foundFileName=tempFind.GetFileName();

if(tempFind.IsDirectory())
{
CString tempDir;
tempDir.Format("%s\\%s",dir,foundFileName);
CopyFile(tempDir);
}
else
{
CString tempFileName1,tempFileName2;
tempFileName1.Format("%s\\%s",dir,foundFileName);
tempFileName2.Format("%s\\%s",m_Path,foundFileName);
::CopyFile(tempFileName1,tempFileName2,FALSE);
}
}
}
tempFind.Close();
}



...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx3046 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 conry 的回复:]
引用 6 楼 wx3046 的回复:
引用 5 楼 conry 的回复:
你在命令行输入dir就会看到,即使是个空目录,里面也显示. ..两个目录,一个点代表当前目录,两个点代表上级,也就是父目录,复制目录的话,肯定是复制当前目录下的文件,和当前目录下的子目录及文件,所以要跳过.跟..


你的意思是说IsDots() 这个函数判断的.不是指a.exe这种文件中的.。 这个函数是用来排除当前目录和父目录这两种情况的咯。。而IsDirectory()是判断普通的文件夹?


没错,就是这个意思
[/Quote]

明白了,谢谢。结贴去。
Conry 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wx3046 的回复:]
引用 5 楼 conry 的回复:
你在命令行输入dir就会看到,即使是个空目录,里面也显示. ..两个目录,一个点代表当前目录,两个点代表上级,也就是父目录,复制目录的话,肯定是复制当前目录下的文件,和当前目录下的子目录及文件,所以要跳过.跟..



你的意思是说IsDots() 这个函数判断的.不是指a.exe这种文件中的.。 这个函数是用来排除当前目录和父目录这两种情况的咯。。而IsDirectory()是判断普通的文件夹?
[/Quote]

没错,就是这个意思
wx3046 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 conry 的回复:]
你在命令行输入dir就会看到,即使是个空目录,里面也显示. ..两个目录,一个点代表当前目录,两个点代表上级,也就是父目录,复制目录的话,肯定是复制当前目录下的文件,和当前目录下的子目录及文件,所以要跳过.跟..
[/Quote]


你的意思是说IsDots() 这个函数判断的.不是指a.exe这种文件中的.。 这个函数是用来排除当前目录和父目录这两种情况的咯。。而IsDirectory()是判断普通的文件夹?
Conry 2009-10-22
  • 打赏
  • 举报
回复
你在命令行输入dir就会看到,即使是个空目录,里面也显示. ..两个目录,一个点代表当前目录,两个点代表上级,也就是父目录,复制目录的话,肯定是复制当前目录下的文件,和当前目录下的子目录及文件,所以要跳过.跟..
wx3046 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cutrain2009 的回复:]
.和。。分别表示当前目录和上一级目录,如果不这样判断与正常目录区别的话,在遍历过程就和进入死循环;
比如一直进入当前目录搜索,。。。。。。等等
[/Quote]


没明白。。能否结合那几个成员函数举个例子说一下?
wx3046 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tht228 的回复:]
dir怎么定义的?
[/Quote]

就cstring
cutrain2009 2009-10-22
  • 打赏
  • 举报
回复
.和。。分别表示当前目录和上一级目录,如果不这样判断与正常目录区别的话,在遍历过程就和进入死循环;
比如一直进入当前目录搜索,。。。。。。等等
tht228 2009-10-22
  • 打赏
  • 举报
回复
dir怎么定义的?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧