我使用readdir方法从目录中读取文件列表到数组。我是否知道如何读取zerro大小文件,因为readdir只会读取非zerro文件。我也想读取空文件(捕获文件名称视为存在,即使它是空的)。我可以知道怎么做吗?以下是我从目录中读取文件的方法: -
opendir (FH, $dirs) || die $! ;
my @lines = readdir (FH) ;
closedir (FH) ;
提前谢谢。
答案 0 :(得分:2)
首先,您不应该使用裸字目录句柄。第二,-z
tells you when a file is empty。这样的事情应该有效:
use strict;
use warnings;
my $dirs="/whatever/dir/you/want";
opendir(my $dh,$dirs) or die $!;
#only grabbing actual files that we can read.
my @files=grep{(-f $_) and (-r $_)} map{"$dirs/$_"} readdir($dh);
closedir($dh);
foreach my $file(@files)
{
if(-z $file)
{
print "File $file is empty.\n";
}
else
{
print "File $file is not empty.\n";
}
}
事实上,正如TLP在评论中指出的那样,您可以使用-s
来获取文件的大小(以字节为单位)。