使用C/C++列出某个目录下的文件
用C/C++列出目录下的文件,在linux下可采用readdir()函数来实现,代码实现过程为:打开目录循环读目录,输出目录下文件关闭目录指针#include <io.h>#include <stdio.h>void printDir( const char* path ){struct _finddata_t data;long hnd =
·
用C/C++列出目录下的文件,在linux下可采用readdir()函数来实现,代码实现过程为:
打开目录
循环读目录,输出目录下文件
关闭目录指针
#include <io.h>
#include <stdio.h>
void printDir( const char* path )
{
struct _finddata_t data;
long hnd = _findfirst( path, &data ); // 查找文件名与正则表达式chRE的匹配第一个文件
if ( hnd < 0 )
{
perror( path );
}
int nRet = (hnd <0 ) ? -1 : 1;
while ( nRet >= 0 )
{
if ( data.attrib == _A_SUBDIR ) // 如果是目录
printf(" [%s]*\n", data.name );
else
printf(" [%s]\n", data.name );
nRet = _findnext( hnd, &data );
}
_findclose( hnd ); // 关闭当前句柄
}
void main()
{
printDir("d:/*.*");
}
相关函数说明:
long _findfirst( char *filespec, struct _finddata_t *fileinfo );
// 功 能 : 提供与filespec指定入口泛式匹配的第一个文件.通常后继用_findnext()函数来完成某泛式下的文件遍历.
// 头文件 : #include <io.h>
// 参 数 : filespec - 目标文件规范,可以包含通配符
// fileinfo - 文件信息buffer
// 返回值 : 成功返回唯一的搜索句柄
// 出错返回-1,且设置errno为如下值:
// ENOENT 该泛式无法匹配
// EINVAL 无效文件名
int _findnext( long handle, struct _finddata_t *fileinfo );
// 功 能 : 按照前面_findfirst中的泛式规则,查找下一个符合该泛式的文件,并以此为依据修改fileinfo中的值
// 头文件 : #include <io.h>
// 参 数 : long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
// fileinfo - 文件信息buffer
// 返回值 : 成功返回0
// 出错返回-1
int _findclose( long handle );
// 功 能 : 关闭搜寻句柄并释放相应资源
// 头文件 : #include <io.h>
// 参 数 : long handle - 搜索句柄(通常由紧靠其前的_findfirst()返回)
// 返回值 : 成功返回0
// 出错返回-1
更多推荐
已为社区贡献1条内容
所有评论(0)