CFileFind是按照什么顺序返回文件的?能设置成按照名称排序的吗?

CFileFind是按照什么顺序返回文件的?能设置成按照名称排序的吗?,第1张

CFileFind::FindFile 在一个文件夹中找你定义的文件,例如你定义的 是 *.* , 那就是从所有的文件名里找。中灶CFileFind::FindNextFile 是按上面一次找的结果,找下一个文件。

默认排列 是按文件名构成的 字符串 从小到大排列。

当然,你也可以,查文件大小,建立日期衫吵,按自己要求排序。

其实,调用DOS DIR 命令也很方便。

system("DIR *.* /od /b >a.lis") 按日期排列,存于 a.lis

system("DIR *.* /os /b >a.lis") 按文件大或培侍小排列,存于 a.lis

这个例启裂子没问题,其实这个例链敏子出自MSDN中CFindFile的使用

控制台程序如下:

#define _AFXDLL

#include<afx.h>

#include<iostream>悄唤闭

using namespace std

int main()

{

CFileFind finder

BOOL bWorking = finder.FindFile(_T("*.*"))

while (bWorking)

{

bWorking = finder.FindNextFile()

wcout<<(LPCTSTR)finder.GetFileName()<<endl

}

system("pause")

return 0

}

finder1.GetFileName()只能返回你找到的一个文件的名字,通过和FindNextFile()配合,可以得到所有文件的名字让搭州。例如:

 CFileFind finder

 坦蔽  BOOL bWorking = finder.FindFile("*.*")

   while (bWorking)

   {

      bWorking = finder.FindNextFile()

      cout << (LPCTSTR) finder.GetFileName() << endl

   }

你的代码,通过GetFileName()只能返回找到的一个文件名。这个文件名,绝对不可能包含通配符*。

所以,你的办法应该是比较文件名是否是 .opt结尾。

if  (finder1.GetFileName().Right(4).MakeLower() == ".opt")

另外注枝昌意,你If中判断的是 “文件名”,删除的是“文件路径”。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8169219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存