CFileFind finder; //定义CFileFind对象
CFile *p;
CFile t;
CString sFullPath = "";
CString strWildcard;
CString temp;
strWildcard = sPath + "\\*.*";
BOOL bWorking = finder.FindFile(strWildcard);
DWORD dFileSize;
// p=&finder;
while (bWorking)
{
bWorking = finder.FindNextFile(); //如果是目录就处理
if (finder.IsDirectory() && ! finder.IsDots())
{
CString sFindDir = finder.GetFileName(); //获得遍历目录的名称
sFullPath = finder.GetFilePath(); //获得遍历目录的完整路径 sFullPath = FindFilePath(sFullPath); //递归遍历
if (!sFullPath.IsEmpty())
{
finder.Close();
return sFullPath;
}
}
else
{
===>>>>> temp=finder.GetFilePath();
t.Open(sFullPath, CFile::modeRead | CFile::shareDenyWrite, NULL);
p=&t;
dFileSize=t.GetLength();
WriteToResource(p,dFileSize);
t.Close();
}
}
finder.Close();
return "";temp为什么得不到完整路径名?而是得到如 c:\aa\. 我需要得到如c:\aa\bb.txt
CFile *p;
CFile t;
CString sFullPath = "";
CString strWildcard;
CString temp;
strWildcard = sPath + "\\*.*";
BOOL bWorking = finder.FindFile(strWildcard);
DWORD dFileSize;
// p=&finder;
while (bWorking)
{
bWorking = finder.FindNextFile(); //如果是目录就处理
if (finder.IsDirectory() && ! finder.IsDots())
{
CString sFindDir = finder.GetFileName(); //获得遍历目录的名称
sFullPath = finder.GetFilePath(); //获得遍历目录的完整路径 sFullPath = FindFilePath(sFullPath); //递归遍历
if (!sFullPath.IsEmpty())
{
finder.Close();
return sFullPath;
}
}
else
{
===>>>>> temp=finder.GetFilePath();
t.Open(sFullPath, CFile::modeRead | CFile::shareDenyWrite, NULL);
p=&t;
dFileSize=t.GetLength();
WriteToResource(p,dFileSize);
t.Close();
}
}
finder.Close();
return "";temp为什么得不到完整路径名?而是得到如 c:\aa\. 我需要得到如c:\aa\bb.txt
解决方案 »
- 关于使用MSCOMM控件的问题
- 怎么让子窗口一个透明,一个不透明?
- 请问大家,sql语句怎样比较时间和日期?
- 提高对大文件(十几M到几百M)的加密速度,有何良策--请各位大侠指点路过
- 如何让非模态对话框接受 WM_KEYDOWN 消息 ???????????
- 怪事年年有,今年特别多
- 关于SOCKET的初级问题,大家帮一下忙,答就给分
- 紧急待答!请教关于局域网的问题
- 为什么GetFocus()取得ClassName总是"CTempWnd",而不是不同焦点时,返回不同类名?拜托!
- icq的消息框的广告是怎么实现的?(能具体说说吗?)
- 求助:如何在对话框刚开始显示,把Static控件的背景色由灰变成白色
- 求助俄罗斯方块相关的问题。
if (finder.IsDirectory() && ! finder.IsDots())
这个条件说明,是目录但不是.的情况走这条路,其它路走else。
在else中,你得到temp。看清楚了,当当前是.的时候,你的程序会走else这条路径,因此temp就出现了c:\aa\. 。解决的办法是在else中也要过滤dot。
改为:
else if(!finder.IsDots())即可