linux文件夹扫描,【C/C++】【Linux&Windows】Windows系统下的文件夹扫描与Linux系统下的实现比较...

1、Windows 系统下实现文件夹下的文件扫描

实现代码如下:

#include

#include

#include

#define TestFolderPath "./"

void ScanFolder(const char* folder_path);

int main(int argc,char* argv[])

{

ScanFolder(TestFolderPath);

return 0;

}

/**

文件夹下的文件扫描(Windows system)

@param folder_path 文件夹路径

*/

void ScanFolder(const char* folder_path)

{

_finddata_t file;

long lf;

char tempStr[256];

strcpy(tempStr,folder_path);

strcat(tempStr,"*.*");

if((lf = _findfirst(tempStr, &file))!=-1)

{

while( _findnext(lf,&file) == 0)

{

if(strcmp(file.name,"..")==0)

{

continue;

}

if(file.attrib == _A_SUBDIR)

{

char tTempStr[256];

strcpy(tTempStr,folder_path);

strcat(tTempStr,file.name);

strcat(tTempStr,"/");

//fprintf(stdout,"%s\n",tTempStr);

ScanFolder(tTempStr);

}

else

{

fprintf(stdout,"%s%s\n",folder_path,file.name);

/*unsigned int type = file.attrib;

if(type == _A_NORMAL)

fprintf(stdout,"普通文件\n");

else if(type == _A_RDONLY)

fprintf(stdout,"只读文件\n");

else if(type == _A_HIDDEN)

fprintf(stdout,"隐藏文件\n");

else if(type == _A_SYSTEM)

fprintf(stdout,"系统文件\n");

else

fprintf(stdout,"存档文件\n");

*/

}

}

}

_findclose(lf);

}

2、Linux系统下实现文件夹下文件的扫描

实现代码如下:

/*

$Id:ScanFolder.c,2012/06/10 17:53:29 sine Exp$

*/

#include

#include

#include

#include

#include

#define FolderPath "./"

void scan_folder(const char* folder_path);

int main(int argc,char* argv[])

{

scan_folder(FolderPath);

return 0;

}

/**

文件夹下文件扫描实现

@param folder_path 文件夹的路径

*/

void scan_folder(const char* folder_path)

{

/*

打开一个目录并建立一个目录流,返回一个指向DIR结构的指针,

该指针用于读取目录数据项.

*/

DIR* dp = opendir(folder_path);

if(NULL == dp)

{

fprintf(stderr,"cannot open directory:%s\n",folder_path);

return ;

}

struct dirent *entry;

struct stat statbuf;

chdir(folder_path);//cd目录切换

/*

readdir,返回一个指针,指针指向的结构里保存着目录流中下一个目录项的有关资源。

后续的readdir调用将返回后续的目录项.

*/

while(NULL != (entry = readdir(dp)))

{

lstat(entry->d_name,&statbuf);

if(S_ISDIR(statbuf.st_mode))

{

if(strcmp(".",entry->d_name) == 0 || strcmp("..",entry->d_name) == 0)

{

continue;

}

char tempStr[256];

strcpy(tempStr,folder_path);

strcat(tempStr,entry->d_name);

strcat(tempStr,"/");

//fprintf(stdout,"before:%s\n",tempStr);

scan_folder(tempStr);

}

else

{

fprintf(stdout,"%s%s\n",folder_path,entry->d_name);

}

}

chdir("..");

closedir(dp);//关闭一个目录流并释放与之关联的资源

}

运行结果:

./Josephus.c

./ScanFolder.c

./Josephus

./readme.txt

./a.out

./test/test.txt

./Makefile

到此,我们就介绍完了两种系统下的文件夹扫描的实现,在这里写下这个,主要是方便以后应用时有个参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值