如何依次读取文件夹中的txt文件并处理其数据?
各位前辈,我想依次地读取文件夹中的txt文档,并且处理里面的数据。查了很多资料都说要用FindFirstFile
和FindNextFile.但是因为我是新手,觉得这个难度好大。。。
可不可以这样做呢?
使用循环,首先定义一个FILE *fp文件指针,让其指向要读的文件夹中的第一个txt,然后读取数据进行处理。第一个
txt搞定之后,*fp指向下一个txt,然后再处理数据,依次类推直到处理完所有的txt。。。。。
但是总感觉fp不能这样做。。。因为fp应该不能自动指向下一个文件名吧?
小妹是最近才接触到C语言中的文本读取操作的,跪求各位大侠指导。。。。查了好长时间的资料
还是一头雾水。。。。泪奔了。。。
[解决办法]
#include<io.h>
#include<stdio.h>
int main()
{
long Handle;
struct _finddata_t FileInfo;
if((Handle=_findfirst("D:\\*.txt",&FileInfo))==-1L)
printf("没有找到匹配的项目\n");
else
{
printf("%s\n",FileInfo.name);
while( _findnext(Handle,&FileInfo)==0)
printf("%s\n",FileInfo.name);
_findclose(Handle);
}
return 0;
}
findfirst算最基础的了吧。你在linux下的话,倒是有很多简单的办法
[解决办法]
你的需求其实是包含了两个步骤:
1、先通过FindFirstFile/FindNextFile搜索文件夹中到底有哪些.txt文档,可以参考:
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.txt", &FindFileData);
while (hFind != INVALID_HANDLE_VALUE)
{
<do stuff with FindFileData Here>
if (!FindNextFile(hFind, &FindFileData))
{
FindClose(hFind);
hFind = INVALID_HANDLE_VALUE;
}
}
2、然后可以搜索到的文件名再用FILE*打开,用fopen/fread/fwrite/fclose等函数去处理。
[解决办法]
system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。