曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3944|回复: 0
打印 上一主题 下一主题

opendir, readdir, closedir 操作目录句柄

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2011-10-11 17:08:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
操作目录,或者说操作目录句柄时,常用到 3 个函数:opendir , readdir 以及 closedir 。

opendir 打开目录,readdir 读取目录中的内容(文件名),closedir 关闭目录。

测试代码:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

my $dir = "/etc";

opendir DH, $dir or die "can not open $dir: $!";

foreach $file (readdir DH) {
        print "one file in $dir is \"$file\"\n";
}

closedir DH;


运行输出:
# ./dirhandle.pl
one file in /etc is "."
one file in /etc is ".."
one file in /etc is "dbus-1"
one file in /etc is "grub.d"
one file in /etc is "ppp"
one file in /etc is "tcpxtract.conf"
one file in /etc is "rpc"
one file in /etc is "logrotate.conf"
... ...
opendir 中的 DH 就是所获得的目录句柄,readdir 就用它来获取目录中的内容。readdir 获得的是目录中的文件名,包括普通文件名和目录名,但他们并不是全路径的,如果要打印出全路径,那么可以写成 “$dir/$file” 。

如果要找出目录下的某类文件,比如找出所有的 .txt 文件,那么可以:
[Perl] 纯文本查看 复制代码
whle ($name = readdir DH) {
   next unless $name =~ /\.txt$/;          #不匹配则 continue
   #匹配.txt,可以做进一步处理
} 



操作完该目录后,可以显式地使用 closedir 来关闭目录句柄,不然在程序退出时这个句柄也会被系统关闭。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-25 20:31 , Processed in 0.062739 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表