2 u012544044 u012544044 于 2014.08.04 09:49 提问

关于CFindFile FindNextFile方法。急!!!在线求助

BOOL CZip::RestoreFileName(CString sDirectory)
{

CFileFind ff;
BOOL bFound = ff.FindFile(sDirectory + _T("\\*.*"));
TCHAR newName[260];
CString sNoteDirectory = sDirectory;
sNoteDirectory += _T("\\note.ini");
CString oldName, oldPath;
int i = 0;
while (bFound)
{
    bFound = ff.FindNextFile();
    if (ff.IsDots())
    {       
        continue;
    }
    if (ff.IsDirectory())
    {
        oldName = ff.GetFilePath();
        RestoreFileName(oldName);

    }
    else
    {

        oldName = ff.GetFileName();

        if (oldName == _T("note.ini"))
        {
            continue;
        }
        oldPath = ff.GetFilePath();
        GetPrivateProfileString(_T("note"),oldName,_T(""),newName,256,sNoteDirectory);
        if (!_tcscmp(newName, _T("")))
        {
            return TRUE;
        }
        CFile::Rename(oldPath,sDirectory+_T("\\")+newName);
    }

}
    return TRUE;

}

BOOL CZip::ModifyFileName(CString sDirectory)
{

CFileFind ff;
BOOL bFound = ff.FindFile(sDirectory + _T("\\*.*"));
int i = 0;
CString sNoteDirectory = sDirectory;
sNoteDirectory += _T("\\note.ini");
CString oldPath, oldName, sExtension, newPath,newName;
int pos, iCount;

while (bFound)
{   
    bFound = ff.FindNextFile();
    if (ff.IsDots())
    {
        continue;
    }
    if (ff.IsDirectory())
    {
        oldPath = ff.GetFilePath();
        ModifyFileName(oldPath);
    }
    else
    {

        oldName = ff.GetFileName();
        oldPath = ff.GetFilePath();
        pos = oldName.Find('.');
        sExtension = oldName.Mid(pos);
        srand(i);
        i++;
        iCount = 100 + rand()%(1000-100+1);

        if (oldName == _T("note.ini"))
        {
            continue;
        }


        newName.Format(_T("%d%s"),iCount,sExtension);

        newPath = sDirectory +_T("\\")+ newName;

        CFile::Rename(oldPath,newPath);

        WritePrivateProfileString(_T("note"), newName,oldName, sNoteDirectory); 
    }       
}

return TRUE;

}

写了两个方法,为了修改文件名和还原文件名。不过我遇到了一个问题,就是在还原文件名的时候当文件超过35个的时候,FindNextFile就找不到文件末尾了,导致我note.ini文件里面没有记录这个键值,得到了空值,然后在修改文件名的时候出现异常。
if (!_tcscmp(newName, _T("")))
{
return TRUE;
}我这样是为了不出现异常情况,但是我想知道,为什么文件超过那个数量的是FindNextFile会出现找不到文件结尾的情况。好愁

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
方法:如何解决CFindFile:FindNextFile找不到最后一个文件
转载请注明来源:http://www.cnblogs.com/xuesongshu/   在网上搜索到的一些遍历算法不仅繁锁,而且存在抄袭现象,而且抄袭的对象有问题,因为他们忽视了一个FindNextFile的一个很重要的问题。在这里我把对问题的分析以及我的方法分享给大家。   首先说明一下,Windows把所有数据单元称为文件,目录(即文件夹)也不例外。它有一个宏定义FILE_ATTRIBU
MFC 中 CFindFile 的用法
void TraversFile(CString csPath) { CString csPrePath = csPath; CString csNextPath = csPath; CFileFind ff; csPath += _T("*.*");//遍历这一级全部的目录 int nResult = ff.FindFile(csPath); wh
用CFindFile遍历目录
<br />OS:WIN32(not support WINCE)<br />SDK:MFC<br />代码如下:<br />CFileFind ff;<br /> CString szDir = m_nFilePath;  //m_nFilePath为用户选择的一个目录<br /> <br /> if(szDir.Right(1) != "//")              //确保目录最后一个字符为'/'<br />  szDir += "//";<br /> <br /> szDir += "*.*"
CFindFile的用法
MSDN: The MFC class CFileFind performs local file searches and is the base class for CGopherFileFind and CFtpFileFind, which perform Internet file searches. CFileFind includes member functions th
求助!!急!急!
本人这几天收到广州多益与H3C的Offer ,请问这两家公司怎么样 ?最近苦恼好久,请大伙帮帮忙,本人刚毕业,对这个不是了解 ,请大伙帮忙出出意见啊
急!急!急!有偿求助
我是一家传统企业公司,本月初从别的地方买了一套营销软件,只能在一台电脑上使用。用后感觉效果不错,想在其他电脑上都安装上软件,但是要注册码。有没有人能破解,帮助一下我。有酬劳,跪求。我电话18232010234【微信同号】...
急急急,求助求助求助
问题代码如下:with open(&quot;pachong.json&quot;,&quot;wb&quot;) as fp:    json.dump(content,fp=fp,indent=4)    提示错误如下、;TypeError: a bytes-like object is required, not 'str'已经想了好几天了,网上说要以二进制写入,但就是不会改,求助大神啊!!!...
急,求助
  delphi7中Database Desktop中File/New/Table下出现Create Table对话框时,在那Table type时,应该选那一项都行,是吗?我选dBASE IV时,在FileName中不能输入中文.这是什么原因呢?有什么解决方法?选Paradox 7时,就可以随便输入中文,为什么呢?
求助!!!!急!!!
1、用数组建立5个学生的信息,包含姓名、学号、电话、数学成绩、语文成绩、英语成绩,输出每个学生的以上信息及总成绩(输出效果方便查看理解,尽量人性化)。把5个学生所有信息(含总成绩)写入磁盘文件中。 2、用指针完成上面一题,或者自己用指针设计完成一个类似的题。 求助第二题
求助!关于网络安全的问题!急!!!
(1)构建实施一个pki系统主要包括()()()()(2)证书签发的两种方式()()(3)信息安全的四个基本的安全服务()()()()(4)证书撤销是pki中十分重要的部分,那么证书撤销的四个可能的原因是()()()()(5)对于asn.1的抽象描述,相应的标准中又一系列的规则,将这些表述翻译成又 0.1组成的二进制序列,其中pki中用的最多的是(),他是另一个重要规则()的一个子集。(6)x,5