C++读取文件夹内的txt文件的文件名,存在数组里面。

麻烦把代码贴出来,并且做一下解释!

CString FileName[1000];
int i = 0;
void find(CString lpPath)
{
CString szFind;
CString szFile;
WIN32_FIND_DATA FindFileData;
szFind = lpPath;
szFind += L"\\*.*"; //这里如果改成*.txt,就只能遍历指定文件夹里面的TXT,不会遍历子文件夹的。
HANDLE hFinds =::FindFirstFile(szFind,&FindFileData);

if(INVALID_HANDLE_VALUE == hFinds) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')//一个目录中,.表示的是当前目录, ..表示的是上层目录,所以这里过滤它
{
//如果不是.号的目录,就进去又遍历。当然如果你不需要这个,就把下面第四行代码屏掉
szFile = lpPath;
szFile += L"\\";
szFile += FindFileData.cFileName;
find(szFile); //递归遍历子文件夹
}
}
else
{
//上面判断了,如果不是文件夹,那就肯定是文件了,把这个文件记录起来
CString str = lpPath + L"\\"+ FindFileData.cFileName;

FileName[i++] = str; //得到文件,保存到一个CString全局数组中
}
if(!FindNextFile(hFinds,&FindFileData)) break;
}
FindClose(hFinds);
}
就是这样子就行了追问

就一个指定文件夹,要怎么样简化,能把头文件什么的一起贴过来吗,我需要一个完整能运行的代码。谢谢。

追答

当然可以了。你用VS创建一个控制台工程,然后复制我的代码就行了

#include
#include

CString g_FileName[1000];
int g_nCount = 0;
void find(CString lpPath)
{
CString szFind;
CString szFile;
WIN32_FIND_DATA FindFileData;
szFind = lpPath;
szFind += _T("\\*.*"); //这里如果改成*.txt,就只能遍历指定文件夹里面的TXT,不会遍历子文件夹的。
HANDLE hFinds =::FindFirstFile(szFind,&FindFileData);

if(INVALID_HANDLE_VALUE == hFinds) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')//一个目录中,.表示的是当前目录, ..表示的是上层目录,所以这里过滤它
{
//如果不是.号的目录,就进去又遍历。当然如果你不需要这个,就把下面第四行代码屏掉
szFile = lpPath;
szFile += _T("\\");
szFile += FindFileData.cFileName;
find(szFile); //递归遍历子文件夹
}
}
else
{
//上面判断了,如果不是文件夹,那就肯定是文件了,把这个文件记录起来
CString str = lpPath + _T("\\")+ FindFileData.cFileName;

g_FileName[g_nCount++] = str; //得到文件,保存到一个CString全局数组中
}
if(!FindNextFile(hFinds,&FindFileData)) break;
}
FindClose(hFinds);
}

void main()
{
find(_T("c:\\123.docx"));

for (int i=0; i<g_nCount; i++)
{
CStringA str = g_FileName[i];
printf("%s\n", str);
}
int end = 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-10
char str[1005];
FILE *fp = fopen("a.txt“,"r");
fscanf(fp,"%s",str);追问

第二行什么意思?读文件吗?

追答

打开一个文件指针……

C++读取文件夹内所有txt文件的文件名对应的日期,如20140101,所有日期存...
PtFileNameDate ptfndate;puts("请输入包含txt文件的目录的路径:");scanf("%s",path);strcat(path,"\\\\LoopData_*.txt");hFind=FindFirstFile(path,&FindFileData);if(hFind==INVALID_HANDLE_VALUE){ printf ("目录中没有符合要求的txt文件!\\n");} else { buf=new char[strlen(FindFileDa...

VC++,读取txt文件数据,并存入数组中。
include <iostream> using namespace std;define FRISTCLM 30000 define SECONDCLM 8 \/\/参数 Filename 为要读的文件名,如:readdd.txt 。int ReadFileToBUF(char * Filename,int bufdd[][SECONDCLM],int len){ FILE *fp=fopen(Filename,"r");if(fp == NULL)return 0;char buf[256],num...

请问C++ 如何从txt文件中读取数据,然后保存在类的数组中?
File_read>>data[i].num>>data[i].name>>data[i].score;i++;} 数组data是的类型是信息类。自己试试。

C++ 从TXT文件中读取数据存到数组中??你是怎么解决的谢谢
文件中读取数据存到数组中的命令:include <fstream> void main()nclude <stdio.h> include <math.h> define MaxLength { int a[10];ifstream fin("D:\/我的输入文件.txt");for(int i=0;i<10;i++)fin>>a[i];for(int i=0;i<10;i++)cout<<a[i]<<endl;ofstream fout("D:\/我的...

C\/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中
C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\\0'),选取fgets进行读取。示例代码如下:include <stdio.h>#include <stdlib.h>int main...

C++怎么读取指定TXT文档数据存入数组中
freopen("文件路径名","r",stdin);int case = 3, A, B;double a[3][3][3];scanf("A=%lf B=%lf",&A,&B);while(case--){ for(i = 0;i < 3;i ++){ for(j = 0;j < 3;j++){ for(k = 0;k < 3;k++){ scanf("%lf",&a[i][j][k]);} } } } ...

C++如何一行一行读取txt文件中数据并存入相应数组?
循环读入。c 程序 可作为 c++程序。include<iostream> include<fstream> using namespace std;include <stdio.h> main(){ int x[5],y[5];int i;FILE *fp;fp=fopen("sk.txt","r");for (i=0;i<5;i++) fscanf(fp,"%d",&x[i]);for (i=0;i<5;i++) fscanf(fp,"%d",&y[i...

c++中怎么把读取文件夹下的所有文件名存入数组
1、在linux平台,可采用目录操作函数,读取当前目录下的文件 include <sys\/types.h> include <dirent.h> \/\/windows开发工具没有这个头文件 include <unistd.h> include <string.h> main(){ DIR * dir;struct dirent * ptr;char file_list[100][40];int i=0;dir = opendir("\/etc\/rc.d")...

C++编程读取TXT数据,将其赋值到数组,而后进行计算
include <iostream>#include <cstdio>#define maxn 10000using namespace std;struct m{ int x; int y; int z;}a[maxn];int main(){ freopen("\/*文件名*\/","r"\/*代表读取*\/,stdin);\/\/从此以后所有读取都会从此文件读 for(int i=0;i!=maxn;i++){ cin>>a[i]...

C++ 怎样从TXT文件中读取数据存到结构体数组中
cout<<"Enter the file path: ";cin>>inputFile; \/\/输入txt文件路径 cout<<endl;infile(inputFile.c_str()); \/\/infile按照指定路径读取txt文件 for(index = 0; index < NO_OF_PERSON; index++)\/\/读取txt文件至struct { infile>>addressTypeList[index].personAddress;infile>>address...

相似回答