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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++编程遍历文件夹,统计当前文件个数,输出文件名相关的知识,希望对你有一定的参考价值。

这个要正对不同的操作系统,不同的操作系统,文件节点的存放方式不一样,读取的方式就不一样了。
可以利用for循环,像Linux
dir=opendir
(dirname)打开文件夹,返回目录指针,dp=readdir(dir)利用读目录,返回一行行读取目录的文件结构体指针,指针中存的有文件属性,是文件,还是文件夹。
通过判断是文件或者文件夹:
如果是文件,就就输出文件名dp->name
否则,就是一个文件夹
继续dir1=opendir(dp->name),dp1=readdir(dir1)..
一直循环到判断不到目录了。
windows应该也有类似的函数吧,这个我就么有用过了,你找找。
参考技术A #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过来,以上代码都是我手敲的,如果编译有错你就试着改改吧,函数本身的算法是可以工作的。

linux ls统计文件个数

linux ls统计文件个数

Linux下有三个命令:lsgrepwc。通过这三个命令的组合可以统计目录下文件及文件夹的个数。

  • 统计当前目录下文件的个数(不包括目录)

            ls -l |grep "^-"|wc -l

  • 统计当前目录下文件的个数(包括子目录)

    ls -l |grep "^d"|wc -l

  • 查看某目录下文件夹(目录)的个数(包括子目录)

         ls -lR|grep "^-"|wc -l 

命令解析:

  • ls -l

长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),每一行对应一个文件或目录,ls -lR是列出所有文件,包括子目录。

    • grep "^-"
      过滤ls的输出信息,只保留一般文件,只保留目录是grep "^d"

    • wc -l
      统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。

 

以上是关于C/C++编程遍历文件夹,统计当前文件个数,输出文件名的主要内容,如果未能解决你的问题,请参考以下文章

C语言,统计文件中的字符个数

如何用C语言统计一个数据文件中的数据个数

c语言:文件操作与字符处理

python 统计文件的个数

C语言中字符统计问题

N组相同固定长度字符数组成员统计 C/C++语言实现