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
++
;
}
}
查看全文
相关阅读:
淘宝网六个质量属性场景
架构漫谈阅读笔记2
poj 3304
poj 2318
bzoj 4008
任意模数NTT
CF623E
CF712E
bzoj 1925
bzoj 4710
原文地址:https://www.cnblogs.com/cy163/p/730294.html
最新文章
[开源]基于STM32的录音播放装置
一如研途深似海,从此轻松是路人
8.程序管理与SELinux初探
7.例行性工作排程
6.磁盘配额与进阶文件系统管理
5.linux帐号管理与权限设定
3.正则表达式
2.bash
1.vim
Linux常用命令整理
热门文章
路由观念与路由器设定-linux鸟哥的私房菜服务器篇08(阅读笔记)
网络安全与主机基本防护-linux鸟哥的私房菜服务器篇07(阅读笔记)
学习四
一线架构师实践指南阅读笔记1
kettle如何实现拆分字段
学习三
学习二
架构漫谈阅读笔记3
如何在代码层实现可用性战术
学习一
Copyright © 2011-2022 走看看