zoukankan
html css js c++ java
Linux下遍历目录下的文件
方法1:
http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html
//
ListFile.cpp
#include
<
stdio.h
>
#include
<
dirent.h
>
#include
<
sys
/
types.h
>
int
main(
int
argc,
char
*
argv[])
{
if
(
2
!=
argc)
{
printf(
"
Usage:ListFileSourceFolder
"
);
return
1
;
}
DIR
*
pDir
=
NULL;
struct
dirent
*
ent
=
NULL;
pDir
=
opendir(argv[
1
]);
if
(NULL
==
pDir)
{
printf(
"
Source folder not exists!
"
);
return
1
;
}
while
(NULL
!=
(ent
=
readdir(pDir)))
{
printf(
"
%s
"
, ent
->
d_name);
}
closedir(pDir);
pDir
=
NULL;
方
//
ListFile.cpp
#include
<
stdio.h
>
#include
<
dirent.h
>
#include
<
sys
/
types.h
>
int
main(
int
argc,
char
*
argv[])
{
if
(
2
!=
argc)
{
printf(
"
Usage:ListFileSourceFolder
"
);
return
1
;
}
DIR
*
pDir
=
NULL;
struct
dirent
*
ent
=
NULL;
pDir
=
opendir(argv[
1
]);
if
(NULL
==
pDir)
{
printf(
"
Source folder not exists!
"
);
return
1
;
}
while
(NULL
!=
(ent
=
readdir(pDir)))
{
printf(
"
%s
"
, ent
->
d_name);
}
closedir(pDir);
pDir
=
NULL;
法2:
http://topic.csdn.net/t/20051221/16/4472968.html
试试下面的代码,我是在redhat上编译运行的。
//
g++ -o read_dir read_dir.cpp
//
用于列出参数目录下的文件
#include
<
stdio.h
>
#include
<
stdlib.h
>
#include
<
sys
/
types.h
>
#include
<
dirent.h
>
int
main(
int
argc,
char
*
argv[])
{
DIR
*
dp;
struct
dirent
*
dirp;
if
(argc
!=
2
)
{
printf(
"
not enough arguments! exit!\n
"
);
exit(
0
);
}
if
((dp
=
opendir(argv[
1
]))
==
NULL)
{
printf(
"
can't open %s!\n
"
,argv[
1
]);
exit(
0
);
}
while
((dirp
=
readdir(dp))
!=
NULL)
printf(
"
%s\n
"
,dirp
->
d_name);
closedir(dp);
}
方法3
#include
<
stdio.h
>
#include
<
dirent.h
>
#include
<
sys
/
types.h
>
#include
<
sys
/
stat.h
>
void
dir_scan(
char
*
path,
char
*
file);
int
count
=
0
;
int
main(
int
argc,
char
*
argv[])
{
struct
stat s;
if
(argc
!=
2
)
{
printf(
"
one direction requried\n
"
);
exit(
1
);
}
if
(lstat(argv[
1
],
&
s)
<
0
)
{
printf(
"
lstat error\n
"
);
exit(
2
);
}
if
(
!
S_ISDIR(s.st_mode))
{
printf(
"
%s not direction name\n
"
,argv[
1
]);
exit(
3
);
}
dir_scan(
""
, argv[
1
]);
printf(
"
total: %d files\n
"
, count);
exit(
0
);
}
void
dir_scan(
char
*
path,cha日
*
file)
{
struct
stat s;
DIR
*
dir;
struct
dirent
*
dt;
char
dirname[
50
];
memset(dirname,
0
,
50
*
sizeof
(
char
));
strcpy(dirname,path);
if
(lstat(file,
&
s)
<
0
)
{
printf(
"
lstat error\n
"
);
}
if
(S_ISDIR(s.st_mode))
{
strcpy(dirname
+
strlen(dirname), file);
strcpy(dirname
+
strlen(dirname),
"
/
"
);
if
((dir
=
opendir(file))
==
NULL)
{
printf(
"
opendir %s/%s error\n
"
);
exit(
4
);
}
if
(chdir(file)
<
0
)
{
printf(
"
chdir error\n
"
);
exit(
5
);
}
while
((dt
=
readdir(dir))
!=
NULL)
{
if
(dt
->
d_name[
0
]
==
'
.
'
)
{
continue
;
}
dir_scan(dirname,dt
->
d_name);
}
if
(chdir(
"
..
"
)
<
0
)
{
printf(
"
chdir error\n
"
);
exit(
6
);
}
}
else
{
printf(
"
%s%s\n
"
, dirname, file);
count
++
;
}
}
查看全文
相关阅读:
JS数组定义及详解
JS中script词法分析
JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
Java面试(1)-- Java逻辑运算符
Java面试(3)-- Java关系运算符
让 history 命令显示日期和时间
mysql 权限管理
docker基础
docker 后台运行和进入后台运行的容器
expect 自动输入密码
原文地址:https://www.cnblogs.com/cy163/p/730294.html
最新文章
数据结构与算法 : 算法与时间复杂度
python__标准库 : 正则表达式(re)
python__系统 : socket_TCP补充,协程
python__系统 : socket_TCP相关
python__系统 : socket_UDP相关
python__系统 : 异步实现以及GIL
Python 多版本安装模块
Docker 基本操作(附 redis、nginx部署)
ArcGIS API for JS 4.x 离线部署(https)
ArcMap 制图出图
热门文章
开机自启动——修改注册表
Windows 窗体的自适应分辨率、分屏显示、开机自启动
WPF + SelfHost 实现窗体自宿主(API,API和窗体通信)
arcgis api for js 出现跨域问题
实现多层DIV叠加的js事件穿透
VMWare vSphere Client 克隆虚拟机 更改IP
20个JS优化代码技巧
JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式
Copyright © 2011-2022 走看看