C/C++编程遍历文件夹,统计当前文件个数,输出文件名

比如一个文件夹里还有文件夹,每个文件夹里还有不同个数的文件,怎样用C或者C++编程,遍历各个文件,统计文件个数

#include<vector>
#include<iostream>

#include<windows.h>
using namespace std;

void searchFileInDirectroy( const string& dir, vector<string>& outList )
{
WIN32_FIND_DATA findData;
HANDLE hHandle;
string filePathName;
string fullPathName;

filePathName = dir;
filePathName += "\\*.*";

hHandle = FindFirstFile( filePathName.c_str(), &findData );
if( INVALID_HANDLE_VALUE == hHandle )
{
cout<<"Error"<<endl;
return;
}

do
{
if( strcmp(".", findData.cFileName) == 0 || strcmp("..", findData.cFileName) == 0 )
{
continue;
}

fullPathName = dir;
fullPathName += "\\";
fullPathName += findData.cFileName;

if( findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
searchFileInDirectroy( fullPathName, outList );
}
else
{
outList.push_back(fullPathName);
}

} while( FindNextFile( hHandle, &findData ) );

FindClose( hHandle );
}

int main()
{
vector<string> pathList;
searchFileInDirectroy("D:\test", pathLIst);

return 0;
}

searchFileInDirectroy 就是用来遍历指定文件夹下的文件及其子目录的。聪明的你一定知道它为什么可以遍历子目录!对啦,这个函数内部判断了取到的文件的属性是否是目录( if( findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) ),如果是,就要递归调用本身函数,直到没有子目录为止。如果你不需要查询子目录,我想你应该知道怎么做。
我用的是远程登录,所以代码没办法copy过来,以上代码都是我手敲的,如果编译有错你就试着改改吧,函数本身的算法是可以工作的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-21
这个要正对不同的操作系统,不同的操作系统,文件节点的存放方式不一样,读取的方式就不一样了。
可以利用for循环,像Linux dir=opendir (dirname)打开文件夹,返回目录指针,dp=readdir(dir)利用读目录,返回一行行读取目录的文件结构体指针,指针中存的有文件属性,是文件,还是文件夹。
通过判断是文件或者文件夹:
如果是文件,就就输出文件名dp->name
否则,就是一个文件夹 继续dir1=opendir(dp->name),dp1=readdir(dir1)..
一直循环到判断不到目录了。
windows应该也有类似的函数吧,这个我就么有用过了,你找找。本回答被网友采纳

C\/C++编程遍历文件夹,统计当前文件个数,输出文件名
vector<string> pathList;searchFileInDirectroy("D:\\test", pathLIst);return 0;} searchFileInDirectroy 就是用来遍历指定文件夹下的文件及其子目录的。聪明的你一定知道它为什么可以遍历子目录!对啦,这个函数内部判断了取到的文件的属性是否是目录( if( findData.dwFileAttributes & FILE_ATTRIBUTE_...

C\/C++编程遍历文件夹,统计当前文件个数,输出文件名
if(lstrcmp(wfd.cFileName,".")==0||lstrcmp(wfd.cFileName,"..")==0) continue;char szFile[MAX_PATH];lstrcpy(szFile,lpszPath);if(!IsRoot(szFile)) lstrcat(szFile,"\\\\");lstrcat(szFile,wfd.cFileName);if((GetFileAttributes(szFile)&FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIB...

C++如何统计文件夹下文件个数
> 输出到1.log 文件这个比较好:dir \/b | find \/v \/c ":" > 1.log===扩展:包含子目录:C++代码tree \/F | find \/c "." \/\/ 带点的文件 tree \/F | find \/v \/c "\/" \/\/ \/是文件命名时禁止使用的,统计全部文件 Linux 下:C++代码# ls -l * |grep "^-"|wc -l \/\/ to count files #...

C++怎么获取一个文件夹中jpg文件的数量 只要数量 用于后面的循环_百 ...
正规一点的做法,就是打开文件节点,遍历每个节点,判断扩展名,如果为JPG则累加,最终得到总数量 偏门一点,但是更简单的做法就是调用 用system调用dir *.jpg 文件夹路径 > tmp.TXT 然后打开tmp.TXT,读文件,计算行数,再减掉dir结尾统计的行数(这个是固定的,你打一下就知道了)得到的就是JPG总数...

C++如何读取一个大文件,并识别各个字符串出现的次数,找到次数最多的...
gets(filename);\/\/输入文件名称 if((fp=fopen(filename,"r"))==NULL)\/\/打开文件 { printf("open %s error!\\n",filename);return 1;} len=strlen(s);c=fgetc(fp);while(!feof(fp)){ if(c==s[0])\/\/如果第一个字符相等,比较剩下的字符串 { fpos=ftell(fp);\/\/记住当前文件指针...

C++程序中统计一个目录下的文件数量,求一个例题 !!!
用系统命令吧 include <stdio.h> include <stdlib.h> int main(){ printf("当前目录下的文件数目为:");system("dir \/b \/a-d | find \/v \/c \\":::\\"");}

求用一批处理统计某文件夹中文件的个数
1、首先需要一个文件夹,随机找一个文件夹,右键点击。2、接下来需要在弹出来的菜单栏中,找到属性并点击它、3、这里红框内我们就可以看到包含多少个文件。4、我们进入需要统计文件数的文件夹里,按住键盘的“Ctrl”不放,再按住键盘上的"A",5、这时我们可以看见文件夹里所有的文件都已经被选中,再...

如何用批处理统计当前文件夹中每个文件夹里的文件数目,并记录文件夹...
echo off&setlocal enabledelayedexpansion(for \/f "delims=" %%i in ('dir \/ad \/b "%~dp0"') do (for \/f "tokens=1-2*" %%j in ('dir \/a \/s "%~dp0%%i"^|findstr \/r "[0-9]*.个文件\\>"') do (set n=%%j)echo %%i [!n! 个文件]))>>result.txtpause ...

C++编写一个程序,它读入一个文件,该文件有若干行整数,统计文件中每行所...
include<iostream.h> include<fstream.h> int main(){ char str[128];ifstream fin("d:\\abc.txt");int n=0;fin.getline(str,128);n++;while(!fin.eof()){ fin.getline(str,128);n++;} cout<<"n="<<n<<endl;return 0;} 这是统计文件有几行,你再加上求平均数就可以了 ...

C++ 编程统计一个文本文件中字符的个数
cout << "Can't open file - " << argv[1]<< "\\nUseage : countch filename" << endl;return 1;} string d;int count = 0;while ( getline(fin, d) ) \/\/以行为单位读入文件 count += d.size(); \/\/累计字符数 cout << "\\n Number of characters : "<< count << endl;}...

相似回答