2、例程:
#include"stdio.h"
#include"io.h"
int main()
{
struct _finddata_t files
int File_Handle
int i=0
File_Handle = _findfirst("c:/temp/*.txt",&files)
if(File_Handle==-1)
{
printf("error\n")
return 0
}
do
{
printf("%s \n",files.name)
i++
}while(0==_findnext(File_Handle,&files))
_findclose(File_Handle)
printf("Find %d files\n",i)
return 0
}
#include <windows.h>/************************************************/
*参数说明:
char *pszDestPath为需要遍历的目标路径
/************************************************/
EnmuDirectory(char *pszDestPath)
{
//此结构说明参MSDN
WIN32_FIND_DATA FindFileData
//查找文件的句柄
HANDLE hListFile
//绝对路径,例:c:\windows\system32\cmd.exe
char szFullPath[MAX_PATH]
//相对路径
char szFilePath[MAX_PATH]
//构造相对路径
wsprintf(szFilePath, "%s\\*", pszDestPath)
//查找第一个文件,获得查找句柄,如果FindFirstFile返回INVALID_HANDLE_VALUE则返回
if((hListFile = FindFirstFile(szFilePath, &FindFileData)) == INVALID_HANDLE_VALUE)
{
//查找文件错误
return 1
}
else
{
do
{
//过滤.和..
//“.”代表本级目录“..”代表父级目录
if( lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
lstrcmp(FindFileData.cFileName, TEXT("..")) == 0 )
{
continue
}
//构造全路径
wsprintf(szFullPath, "%s\\%s", pszDestPath, FindFileData.cFileName)
//读取文件属性,如果不是文件夹
if(!(FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY))
{
//这里你可以自己添加分析是某种类型文件的代码。可以根据
//扩展名分析。
//这里有个实例,你可以看看
//有必要初始化一下
char *pszFileType = NULL
//把pszFileType指向cFileName的倒数第三个数符。因为一般扩展名长为3个字符。
//当然,你也可以用其它方法分析扩展名。或倒序查“.”
pszFileType = &(FindFileData.cFileName[strlen(FindFileData.cFileName) - 3])
//如果是jpg结尾的文件
if(!stricmp(pszFileType, "jpg"))
{
FILE *fp
//或许这里打开C:\\data.txt不应该用"w+",你可试着来
fp = fopen("c:\\data.txt", "w+")
if(fp) fputs(szFullPath, fp)
fclose(fp)
}
}
//如果是文件夹,则递归调用EnmuDirectory函数
if(FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)
{
EnmuDirectory(szFullPath)
}
//循环,查找下一个文件
}while(FindNextFile(hListFile, &FindFileData))
}
//关闭句柄
FindClose(hListFile)
//清空结构。可有可无的一句代码。函数退出会自动清空。
ZeroMemory(&FindFileData, sizeof(FindFileData))
return 0
}
这是windows api版的,还有MFC版的和C版的。要的话来找我Q:503267714
用C的函数实现,windows ,linux 都能
#include <iostream>
#include <io.h>
#include <string>
using namespace std
void dir(string path)
{
long hFile = 0
struct _finddata_t fileInfo
string pathName, exdName
// \\* 代表要遍历所有的类型
if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) {
return
}
do
{
//判断文件的属性是文件夹还是文件
cout <<fileInfo.name <<(fileInfo.attrib&_A_SUBDIR? "[folder]":"[file]") <<endl
} while (_findnext(hFile, &fileInfo) == 0)
_findclose(hFile)
return
}
int main()
{
//要遍历的目录
string path="E:\\work\\zhidao\\test4"
dir(path)
system("pause")
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)