c++ cfindfile-关于CFindFile FindNextFile方法。急!!!在线求助

问题描述

关于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会出现找不到文件结尾的情况。好愁

时间: 2024-09-14 15:12:30

c++ cfindfile-关于CFindFile FindNextFile方法。急!!!在线求助的相关文章

mfc文本框edit ctrl光标焦点问题-急在线等-谢谢

问题描述 mfc文本框edit ctrl光标焦点问题-急在线等-谢谢 有2个文本框A,B 文本框A:作为log输出信息窗口,假设不停地输出log信息,我使用setsel.setfocus.replacesel的方法做的末尾追加:文本框B:一个输入的文本框,在文本框A不停输出的前提下,光标焦点老是跑到文本框A的末尾: 问题:文本框B怎么才能在 文本框A不停输出的前提下 获取光标焦点,焦点不跑到A? 谢谢,描述的应该很清楚了,如果不清楚,请追问,再次谢谢. 解决方案 追加文本用不着设置焦点.Send

请教一下,代码优化问题,急在线等

问题描述 请教一下,代码优化问题,急在线等 @RequestMapping(value = { "/getaddressmg" }) public ModelAndView getAddressMg(HttpServletRequest request, Model model) { ModelAndView view = this.getBaseModelAndView("custom/addressmg/addressmg"); try { CustomInfo

acm-java代码没有被AC,急在线等

问题描述 java代码没有被AC,急在线等 很简单的一道例题 但是就是没有被AC,而是WA 我没用过acmcoder import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner scan=new Scanner(System.in); int min,max; int bai,shi,ge; boolean tag=true; while(scan.hasNext())

jsp-百度编辑器1.4.3JSP版 如何修改文件上传路径?急在线等

问题描述 百度编辑器1.4.3JSP版 如何修改文件上传路径?急在线等 RT 默认的上传路径在重启Tomcat的时候会造成图片丢失的情况,请问该如何修改百度编辑器的文件上传路径 急........................在线等 解决方案 在ueditor/jsp/config.json中的 "imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存

请问这个C++的dll在C#中怎么调呀?急……在线等!

问题描述 请问这个C++的dll在C#中怎么调呀?急--在线等! C++中的调用: extern "C" _declspec(dllimport) int ReadGzjzzData(char* pData,char* photo,int * iErrCode); void CReadGzjzzDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 // OnOK(); char Data[64*1024] = {0};//各字段用双竖"

jquery-jQuery自动排版,急在线等

问题描述 jQuery自动排版,急在线等 一横排8张图片,我隐藏右边jQuery如何让其余图片自动向右靠 解决方案 右浮动布局就好了, <style> .floatright img{float:right;margin-left:5px} </style> <div class="floatright"> <img alt="image1"/> <img alt="image2"/>

java-JAVA ATM类 很急 在线等

问题描述 JAVA ATM类 很急 在线等 初学者急求教,题目如下,谢谢大家了 应用Java面向对象概念编写一个银行ATM系统Java应用,要求实现下列功能: 1.查询余额 2.存款 2.取款: 3.转账 应用技术要求: 1.要应用到Java面向对象技术(封装,基础和多态,也可有接口等技术) 2.要求有图形界面作为界面,后台应用非图形界面 3.可应用其他Java技术 解决方案 http://www.atguigu.com/download.shtml 这个链接你点击进去,这里面的免费视频中有个b

字段-有关oracle11g的问题,急在线等

问题描述 有关oracle11g的问题,急在线等 a5107 这个字段数据类型为varchar2 长度为 1 现在有几笔数据显示是没有值的.我用条件 a5107=' ' 或者 a5107=null 或者 a5107 <> '0' 这几个条件都查不到这几笔数据 .不知有没有大神知道原因 解决方案 你用 is null,is not null,试试 解决方案二: a5107 IS NULL

visual studio-VS2013 c++ 编写与导入dll文件 详细求教 急在线等

问题描述 VS2013 c++ 编写与导入dll文件 详细求教 急在线等 首先想明确动态链接库与静态链接库的区别,以及是否可以通过dll与lib文件判断该接口是动态链接库还是静态链接库.如何判断. 其次,想求教如何用VS2013,在完全空白项目下编写dll文件一步步编写一个最简单的类. 最后,如何导入一个已经编好的dll文件 QQ398612945(答好另有酬谢) 解决方案 加我QQ 893277858 给你整个工程的代码... 解决方案二: 动态库和静态库都需要.h .lib文件,动态库还需要