采用vector建立栈的方式,打印文件夹下所有文件名称(FindFirstFile与FindNextFile的使用)
2017-03-02 12:24
831 查看
HANDLE WINAPI FindFirstFile(_In_ LPCTSTR lpFileName,_Out_ LPWIN32_FIND_DATA lpFindFileData);
FindFirstFile()用于查找当前目录下的第一个文件名称,返回一个句柄
FineNextFile()利用上面返回的句柄查找当前目录中的下一个文件
//文件属性信息
//#define FILE_SHARE_READ 0x00000001 //#define FILE_SHARE_WRITE 0x00000002 //#define FILE_SHARE_DELETE 0x00000004 //#define FILE_ATTRIBUTE_READONLY 0x00000001 //#define FILE_ATTRIBUTE_HIDDEN 0x00000002 //#define FILE_ATTRIBUTE_SYSTEM 0x00000004 //#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 //#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 //#define FILE_ATTRIBUTE_DEVICE 0x00000040 //#define FILE_ATTRIBUTE_NORMAL 0x00000080 //#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 //#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 //#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 //#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 //#define FILE_ATTRIBUTE_OFFLINE 0x00001000 //#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 //#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 //#define FILE_ATTRIBUTE_INTEGRITY_STREAM 0x00008000 //#define FILE_ATTRIBUTE_VIRTUAL 0x00010000 //#define FILE_ATTRIBUTE_NO_SCRUB_DATA 0x00020000
#include <Windows.h>#include <vector>#include <iostream>#include "string"using std::vector;using namespace std;void PrintAllFileName(string start);int main(){string start = "E:";PrintAllFileName(start);getchar();return 0;}//打印文件夹下所有普通文件文件名void PrintAllFileName(string start){HANDLE hFile;WIN32_FIND_DATA FindFileData;string strpush;//定义缓存空间存放文件夹信息vector<string>tchFileName;//将顶层目录路径压入栈中tchFileName.push_back(start);while (!tchFileName.empty()){//提取tchFileName栈顶目录信息strpush = tchFileName.back();//删除栈顶目录信息tchFileName.pop_back();//查找该目录下第一个文件hFile = FindFirstFile(((strpush + "\\*.*").c_str()), &FindFileData);tchFileName.size();//没有查找到文件if (hFile == INVALID_HANDLE_VALUE){continue;}//目录文件 //if判断语句中必须使用&操作符if ((FindFileData.cFileName[0] != '.' ) //用来过滤上层和下层目录名称&&!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)&&!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)){if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){//普通目录 将文件索引保存到tchFileName栈中tchFileName.push_back(strpush + "\\" + FindFileData.cFileName);}else{//普通文件 打印文件名cout<<FindFileData.cFileName<<endl;}}//判断该目录下是否还有其他文件while(FindNextFile(hFile, &FindFileData)){//目录文件if ((FindFileData.cFileName[0] != '.' )&&!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)&&!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)){if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){//普通目录 将文件索引保存到tchFileName栈中tchFile80f0Name.push_back(strpush + "\\" + FindFileData.cFileName);}else{//普通文件 打印文件名cout<<FindFileData.cFileName<<endl;}}}}::FindClose(hFile);}
相关文章推荐
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- windows系统下使用FindFirstFile 和 FindNextFileA遍历某目录下的所有文件(c++编写)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile对给定目录下所有文件进行广度优先遍历
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件
- 利用FindFirstFile()以及FindNextFile()函数 实现遍历文件夹里的文件
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- Windows下使用FindFirstFile和FindNextFile列举目录中的文件
- C/C++ 利用FindFirstFile()和FindNextFile() 历遍指定目录的所有文件
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件
- 利用FindFirstFile和FindNextFile查找文件或遍历文件夹