64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
using namespace std;
typedef long long int64;
typedef void (*ENUM_FILES_FUNCTION)(const TCHAR*, LPWIN32_FILE_ATTRIBUTE_DATA);
#define SYS_IS_DIRECTORY(f) (f & FILE_ATTRIBUTE_DIRECTORY)
#define SYS_IS_HIDDEN(f) (f & FILE_ATTRIBUTE_HIDDEN)
#define SYS_IS_READONLY(f) (f & FILE_ATTRIBUTE_READONLY)
#define SYS_IS_SYSTEM(f) (f & FILE_ATTRIBUTE_SYSTEM)
extern void EnumFiles(const TCHAR*, ENUM_FILES_FUNCTION);
const TCHAR* GetExtendName(const TCHAR* szFileName)
{
static TCHAR result[32] = {0};
const TCHAR* t = szFileName;
unsigned int i = 32;
if (!szFileName)
{
result[0] = 0;
return result;
}
unsigned int len = _tcslen(szFileName);
while (len-- && --i)
if (szFileName[len] == '.' || szFileName[len] == '\\')
break;
if (i == 0 || szFileName[len] == '\\' || len == 0)
result[0] = 0;
else
::_tcscpy(result, szFileName + len);
return result;
}
void fuck(const TCHAR* f, LPWIN32_FILE_ATTRIBUTE_DATA)
{
if (!_tcscmp(GetExtendName(f), ".txt")) cout << f << endl;
}
void EnumFiles(const TCHAR* szSourceDir, ENUM_FILES_FUNCTION callback_fun)
{
if (!szSourceDir) return;
WIN32_FIND_DATA FindFileData;
WIN32_FILE_ATTRIBUTE_DATA FindFileAttr;
HANDLE hFind = INVALID_HANDLE_VALUE;
TCHAR currDir[MAX_PATH];
TCHAR Result[MAX_PATH];
_tcsncpy(currDir, szSourceDir, _tcslen(szSourceDir) + 1);
_tcsncat(currDir, _T("\\*"), 3);
hFind = FindFirstFile(currDir, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE) return;
do
{
if (*FindFileData.cFileName == '.') continue;
_stprintf(Result, _T("%s\\%s"), szSourceDir, FindFileData.cFileName);
if (callback_fun && GetFileAttributesEx(Result, GetFileExInfoStandard, &FindFileAttr))
{
(*callback_fun)(Result, &FindFileAttr);
}
} while (FindNextFile(hFind, &FindFileData));
}
int main()
{
EnumFiles("d:\\projects", fuck);
return 0;
}
CList<CString> pathList;
if(path.Right(1)!="\\")
path+=TEXT("\\");
path+=TEXT("*.txt");
while(!pathList.IsEmpty())
{
CFileFind file;
BOOL hasNext = TRUE;
if( !file.FindFile(path) )
hasNext=FALSE;
while(hasNext)
{
hasNext = file.FindNextFile();
// 跳过点文件夹
if( file.IsDots()) continue;
if(fileType(file.GetFilePath()) == 0)//找到txt文件
{
//处理txt文件
}
}
}