遍历一个文件夹下面的所有文件MFC版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
void CMFCProjectView::OnTestTest()
{
     std::vector<CString> v;
     TraverseDir(CString( "F:\\HGUI\\HGUI" ), v);
  
#ifdef _UNICODE
     wofstream ofs;
#else
     ofstream ofs;
#endif
     ofs.open( "log.txt" );
     if (ofs.is_open())
     {
         for ( int i=0; i<v.size(); ++i)
         {
             TCHAR * p = v[i].GetBuffer();
             ofs <<p<<endl;
  
         }
         ofs.close();
     }
}
  
  
  
void CMFCProjectView::TraverseDir(CString& dir, std::vector<CString>& vec)
{
     CFileFind ff;
     if (dir.Right(1) != "\\" )
         dir += "\\" ;
     dir += "*.*" ;
      
     BOOL ret = ff.FindFile(dir);
     while (ret)
     {
         ret = ff.FindNextFile();
         if (ret != 0)
         {
             if (ff.IsDirectory() && !ff.IsDots())
             {
                 CString path = ff.GetFilePath();
                 TraverseDir(path, vec);
             }
             else if (!ff.IsDirectory() && !ff.IsDots())
             {
                 CString name = ff.GetFileName();
                 CString path = ff.GetFilePath();
                 vec.push_back(path);
             }
         }
     }
}

  

CFileFind类的使用总结

 

1 、 CFileFind 类的声明文件保存在 afx.h 头文件中。

 

2 、该类的实现的功能:执行本地文件的查找 ( 查找某个具体的文件,查找某类文件 x*.x* ,查找所有文件 *.*)

 

3 、 CFileFind 类是 CGopherFileFind 和 CFtpFileFind 类的基类。

 

4 、 CFileFind 类的构造函数 ::CFileFind() 和关闭函数 ::Close() 我会成对使用。

 

5 、 CFileFind 类的成员函数我根据其操作特性划分为3类:查找操作类、获得文件属性类、判断文件属性类。 ( 下面我先进行函数罗列并没有完整的描述函数的参数 )

 

查找操作类

 

      ::FindFile();

 

      ::FindNextFile();

 

获得文件属性类

 

      ::GetCreationTime();

 

      ::GetLastAccessTime();

 

      ::GetLastWriteTime();

 

::GetFileName();

 

::GetRoot();

 

      ::GetFilePath();

 

      ::GetFileTitle();

 

      ::GetFileURL();

 

      ::GetLength();

 

     

 

判断文件属性类

 

      ::IsArchived();

 

      ::IsCompressed();

 

      ::IsDirectory();

 

      ::IsDots();

 

      ::IsHidden();

 

      ::IsNormal();

 

      ::IsReadOnly();

 

      ::IsSystem();

 

      ::IsTemporary();

 

      ::MatchesMask();

 

6 、 CFileFind 类中成员函数使用应注意的顺序

 

       在创建了 CFileFind 对象后,先执行 ::FindFile() 函数,然后执行 ::FindNextFile() ,然后选择执行(获得文件属性类)的函数或者(判断文件属性类)函数。

 

7 、 CFileFind 类成员函数的详细分析

 

virtual BOOL FindFile(LPCTSTR pstrName = null,DWORD dwUnused = 0);

 

该函数若返回 非 0  则表明执行成功, 0  则表明执行不成功。

 

pstrName :需要查找的文件名,例:“ E:\\ 编程工具 \\VC++\\MFC 例子 .rar ”,“ E:\\ 编程工具 \\VC++\\MFC*.rar ”,“ E:\\ 编程工具 \\VC++\\*.* ”,也可以是 NULL 表示“ *.* ”。

 

dwUnused :必须为 0

 

 

 

virtual BOOL FindNextFile();

 

该函数返回值 非 0  还有符合条件的文件 ,  0 表示是最后一个文件。

 

 

 

virtual BOOL GetCreationTime(FILETIME *pFileTime) const;

 

virtual BOOL GetCreationTime(CTime& refTime) const;

 

该函数用来获得查找到的某个文件的创建时间,返回值 非 0  获得创建时间成功操作, 0 表示执行获得创建时间失败或者 FindNextFile() 没有被执行的时候。

 

FILETIME  * :容纳时间的结构指针

 

CTime& :容纳时间的对象地址

 

此处介绍: FILETIME 和 CTime 相互转换的处理方法:

 

FILETIME 转 CTime 的方法:

 

A 、 CTime 对象在初始化时可以传递 FILETIME 结构

 

      FILETIME ft ;

 

      CTime time(ft) ;

 

B 、将 FILETIME 转换为 SYSTEMTIME ,然后 CTime 对象在初始化时可以传递 SYSTEMTIME 结构

 

      FILETIME ft ;

 

      SYSTEMTIME st ;

 

      BOOL bSuccess  =  ::FileTimeToSystemTime(&ft , &st);

 

      CTime time(st) ;

 

CTime 转 FILETIME 方法:

 

CTime time(CTime::GetCurrentTime());

 

SYSTEMTIME st;

 

time.GetAsSystemTime(st);

 

FILETIME ft;

 

::SystemTimeToFileTime(&st,&ft);

 

 

 

virtual BOOL GetLastAccessTime(FILETIME *pFileTime) const;

 

virtual BOOL GetLastAccessTime(CTime& refTime) const;

 

该函数用来获得某个文件最后被访问的时间,非 0 表示执行成功, 0 表示执行失败或者 FindNextFile() 函数没有执行的时候。

 

 

 

virtual BOOL GetLastWriteTime(FILETIME *pFileTime) const;

 

virtual BOOL GetLastWriteTime(CTime& refTime) const;

 

该函数用来获得某个文件最后被访问的时间,非 0 表示执行成功, 0 表示执行失败或者 FindNextFile() 函数没有执行的时候。

 

 

 

virtual CString GetFilePath() const;

 

该函数用来获得查找到的文件绝对路径,必须在执行了 FindNextFile() 后该函数才能执行成功。

 

返回的结果是 CString 对象,例“ E:\\ 编程工具 \\VC++\\MFC.rar ”

 

 

 

virtual CString GetFileName() const;

 

该函数用来获得查找到的文件的全称,必须在执行了 FindNextFile() 后该函数才能执行成功。

 

返回的结果是 CString 对象,例“ MFC.rar ”

 

 

 

virtual CString GetFileTitle() const;

 

该函数用来获得查找到的文件的名称,必须在执行了 FindNextFile() 后该函数才能执行成功。

 

返回的结果是 CString 对象,例“ MFC ”

 

 

 

virtual CString GetRoot() const;

 

该函数用来获得查找到的文件的根目录,必须在执行了 FindNextFile() 后该函数才能执行成功。

 

返回的结果是 CString 对象,例“ E:\\ 编程工具 \\VC++\\ ”

 

 

 

virtual CString GetFileURL() const;

 

该函数用来获得查找到的文件的 URL 路径,必须在执行了 FindNextFile() 后该函数才能执行成功。

 

返回的结果是 CString 对象,例“ file://E:\\ 编程工具 \\VC++\\MFC.rar ”

 

 

 

DWORD GetLength() const;

 

该函数返回值获得查找到的文件的长度,必须在执行了 FindNextFile() 后该函数才能执行成功。

 

 

 

BOOL IsArchived() const;

 

该函数用来判断查找的文件属性是否是档案文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL  IsCompressed() const;

 

该函数用来判断查找的文件属性是否是压缩文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsDirectory() const;

 

该函数用来判断查找的文件属性是否是路径文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsDots() const;

 

该函数用来判断查找的文件属性是否是“ . ”,“ .. ”,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsHidden() const;

 

该函数用来判断查找的文件属性是否隐藏文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsNormal() const;

 

该函数用来判断查找的文件属性是否正常文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsReadOnly() const;

 

该函数用来判断查找的文件属性是否只读文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsSystem() const;

 

该函数用来判断查找的文件属性是否系统文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL IsTemporary() const;

 

该函数用来判断查找的文件属性是否临时文件,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

 

 

BOOL MatchesMask(DWORD dwMask) const;

 

该函数用来判断查找的文件的综合属性,非 0 表示是, 0 表示不是。必须在执行了 FindNextFile() 后该函数才能执行成功

 

dwMask 参数的使用方法:几种文件属性采用或运算( | )

 

文件属性的结构定义:

 

      FILE_ATTRIBUTE_ARCHIVE :档案文件

 

      FILE_ATTRIBUTE_COMPRESSED :压缩文件

 

      FILE_ATTRIBUTE_DIRECTORY :路径文件

 

      FILE_ATTRIBUTE_NORMAL :正常文件

 

      FILE_ATTRIBUTE_READONLY :只读文件

 

      FILE_ATTRIBUTE_SYSTEM :系统文件

 

      FILE_ATTRIBUTE_TEMPORARY :临时文件

 

      FILE_ATTRIBUTE_HIDDEN :隐藏文件
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值