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
++
;
}
}
查看全文
相关阅读:
java09 队列Queue与Deque
java08 Set
java07 map
SNMP学习
NPM
windows主机资源Snmp OIDs CPU, Memory, Disk等
servlet3.0 @webfilter 过滤顺序
snmp v3的安全配置 snmp认证与加密配置(53)
CentOS 7.2 (mini) 里iptables防火墙怎么关闭?
ORA-00845 MEMORY_TARGET not supported on this system 的解决
原文地址:https://www.cnblogs.com/cy163/p/730294.html
最新文章
查看以及改变文件的编码格式
difference in physical path, root path, virutal path, relative virtual path, application path and aboslute path?
Understanding IIS Bindings, Websites, Virtual Directories, and lastly Application Pools
[WebView五学习]:调试Web Apps
python基础课程_学习笔记15:标准库:有些收藏夹——fileinput
vim代码折叠命令简短
Maven 生命周期
Ubuntu 设备 spark
ios发电子邮件
将 Android* x86 NDK 供 Eclipse* 而移植 NDK 演示示例应用程序
热门文章
王立平--android发育,转让eclipse可选颜色
ffplay for mfc 代码备忘录
eclipse luna 无法安装veloeclipse问题
java16 程序、进程、线程
java15 IO装饰设计模式
java14 处理流
java13 InputStream,Reader
java12 File类
java11 Guava:谷歌开发的集合库
java10 WeakHashMap
Copyright © 2011-2022 走看看