我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 怎样遍历文件? 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

luwen



性别: 帅哥 状态: 该用户目前不在线
头衔: 无我相
等级: 人见人爱
发贴: 4372
威望: 0
浮云: 1120
在线等级:
注册时间: 2006-09-14
最后登陆: 2013-09-25

5come5帮你背单词 [ fountain /'fauntin/ n. 喷泉 ]


怎样遍历文件?

有蝈蝈谁能够帮忙写一下遍历一个文件夹里面的所有文件及文件夹里的所有文件的程序吗?
顶端 Posted: 2007-10-02 22:12 | [楼 主]
惊羽九天



贝尔诺勋章
性别: 帅哥 状态: 该用户目前不在线
等级: 优秀版主
发贴: 1147
威望: 5
浮云: 0
在线等级:
注册时间: 2007-01-14
最后登陆: 2012-05-18

5come5帮你背单词 [ stainless /'steinlis/ a. 纯洁的,不生锈的 ]


用递归,API中的FindFirstFile和FindNextFile函数
Copy code
void FindFileInDir(char* rootDir, char* strRet)
{
    char fname[MAC_FILENAMELENOPATH];
    ZeroMemory(fname, MAC_FILENAMELENOPATH);
    WIN32_FIND_DATA fd;
    ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
    HANDLE hSearch;
    char filePathName[256];
    char tmpPath[256];
    ZeroMemory(filePathName, 256);
    ZeroMemory(tmpPath, 256);
    strcpy(filePathName, rootDir);
    BOOL bSearchFinished = FALSE;
    if( filePathName[strlen(filePathName) -1] != '\\' )
    {
      strcat(filePathName, "\\");
    }
    strcat(filePathName, "*");
    hSearch = FindFirstFile(filePathName, &fd);
    //Is directory
    if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
      && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )     
    {
      strcpy(tmpPath, rootDir);
      strcat(tmpPath, fd.cFileName);
      FindFileInDir(tmpPath, strRet);
    }
    else  if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
              {
                  sprintf(fname, "%-50.50s", fd.cFileName);
                  strcat(strRet + strRet[strlen(strRet)] , fname);
              }
    while( !bSearchFinished )
    {
      if( FindNextFile(hSearch, &fd) )
      {
          if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
              && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )     
          {
              strcpy(tmpPath, rootDir);
              strcat(tmpPath, fd.cFileName);
              FindFileInDir(tmpPath, strRet);
          }
          else  if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
                    {
                        sprintf(fname, "%-50.50s", fd.cFileName);
                        strcat(strRet + strRet[strlen(strRet)] , fname);
                    }
      }
      else
      {
          if( GetLastError() == ERROR_NO_MORE_FILES )          //Normal Finished
          {
              bSearchFinished = TRUE;
          }
          else
              bSearchFinished = TRUE;    //Terminate Search
      }
    }
    FindClose(hSearch);
}
顶端 Posted: 2007-10-04 21:35 | [1 楼]
fishier



性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1186
威望: 0
浮云: 1326
在线等级:
注册时间: 2007-04-29
最后登陆: 2019-01-12

5come5帮你背单词 [ cap /kæp/ n. 帽子 ]


LS强大啊
顶端 Posted: 2007-10-04 21:37 | [2 楼]
luwen



性别: 帅哥 状态: 该用户目前不在线
头衔: 无我相
等级: 人见人爱
发贴: 4372
威望: 0
浮云: 1120
在线等级:
注册时间: 2006-09-14
最后登陆: 2013-09-25

5come5帮你背单词 [ appropriate /ə'prəupriit/ a. 合适的,适当的 ]


Quote:
引用第1楼惊羽九天于2007-10-04 21:35发表的  :
用递归,API中的FindFirstFile和FindNextFile函数
[code]void FindFileInDir(char* rootDir, char* strRet)
{
    char fname[MAC_FILENAMELENOPATH];
    ZeroMemory(fname, MAC_FILENAMELENOPATH);
.......

谢谢蝈蝈了~~~~
顶端 Posted: 2007-10-04 23:52 | [3 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.017448(s) query 7, Time now is:06-04 01:41, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号