读取的代码方式如下:
intmain()
{
longfile
struct_finddata_tfind
_chdir("d:\\")
if((file=_findfirst("*.*",&find))==-1L)
{
printf("空白!\n")
exit(0)
}
printf("%s\n",find.name)
while(_findnext(file,&find)==0)
{
printf("%s\n",find.name)
}
_findclose(file)
return0
}
1、如果是在window环境下,可以用一下方法:
使用stdlib.h头文件声明的system()函数,调用系统命令dir,把c:目录下文件列表写入文件dir.txt中
2、使用dirent.h头文件中声明的opendir(),readdir()函数;
3、如果没有dirent.h,可以使用io.h头文件中声明的_findfirst(),_findnext()函数:
可以使用命令行命令。
Win+R,输入CMD,打开命令行提示符窗口,用CD命令定位到需要获取文件夹内文件名称的目录下,如C:\A,然后输入以下代码,就会生成文件清单到file01.TXT文件中。
DIR /B /S /A:-D >file01.txt
//获取指定目录下的所有文件列表 author:wangchangshaui jluchar** getFileNameArray(const char *path, int* fileCount)
{
int count = 0
char **fileNameList = NULL
struct dirent* ent = NULL
DIR *pDir
char dir[512]
struct stat statbuf
//打开目录
if ((pDir = opendir(path)) == NULL)
{
myLog("Cannot open directory:%s\n", path)
return NULL
}
//读取目录
while ((ent = readdir(pDir)) != NULL)
{ //统计当前文件夹下有多少文件(不包括文件夹)
//得到读取文件的绝对路径名
snprintf(dir, 512, "%s/%s", path, ent->d_name)
//得到文件信息
lstat(dir, &statbuf)
//判断是目录还是文件
if (!S_ISDIR(statbuf.st_mode))
{
count++
}
} //while
//关闭目录
closedir(pDir)
// myLog("共%d个文件\n", count)
//开辟字符指针数组,用于下一步的开辟容纳文件名字符串的空间
if ((fileNameList = (char**) myMalloc(sizeof(char*) * count)) == NULL)
{
myLog("Malloc heap failed!\n")
return NULL
}
//打开目录
if ((pDir = opendir(path)) == NULL)
{
myLog("Cannot open directory:%s\n", path)
return NULL
}
//读取目录
int i
for (i = 0(ent = readdir(pDir)) != NULL &&i <count)
{
if (strlen(ent->d_name) <= 0)
{
continue
}
//得到读取文件的绝对路径名
snprintf(dir, 512, "%s/%s", path, ent->d_name)
//得到文件信息
lstat(dir, &statbuf)
//判断是目录还是文件
if (!S_ISDIR(statbuf.st_mode))
{
if ((fileNameList[i] = (char*) myMalloc(strlen(ent->d_name) + 1))
== NULL)
{
myLog("Malloc heap failed!\n")
return NULL
}
memset(fileNameList[i], 0, strlen(ent->d_name) + 1)
strcpy(fileNameList[i], ent->d_name)
myLog("第%d个文件:%s\n", i, ent->d_name)
i++
}
} //for
//关闭目录
closedir(pDir)
*fileCount = count
return fileNameList
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)