文件的类型(只输出dir类型)

sunner008 2011-01-19 09:31:52
<?php
$opts = "";
$files = array();
$cmdname = array_shift($argv);
$dir = "./";

foreach ($argv as $arg) {
if (strlen($arg) == 0) continue;
if ($arg{0} == '-') //{}を文字列を呼び出す
$opts .=substr($arg, 1);
else
$files[] = $arg;
}

if (strlen($opts) > 0) {
if ($opts{0} == 'a'){
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (filetype($file ) == 'file'){
echo "filename: $file : filetype: " . filetype($file) . "\n";

}

}
closedir($dh);
}
}

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (filetype($file ) == 'dir'){
echo "filename: $file : filetype: " . filetype($file) . "\n";
}

}
closedir($dh);
}
}

}
}
elseif(strlen($opts) == 0){
if(count($files) == 0){
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file{0} !== '.' && filetype($file ) == 'file'){
echo "filename: $file : filetype: " . filetype($file) . "\n";
}
}
}
}
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file{0} !== '.' && filetype($file ) == 'dir'){
echo "filename: $file : filetype: " . filetype($file) . "\n";
}
}
}
}
}
}

if (count($files) > 0){
foreach ($files as $file){
if (filetype($file ) == 'dir'){
$dir = "$file/";

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {//为何加入if (filetype($file ) == 'file')的语句就执行不了了呢?如果我只要输出dir型的文件该如何做呢? echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}

}
elseif(filetype($file ) == 'file'){
print "$file\n";
}

}
}


?>


如果输入 php ls.php sum
只输出sum下的dir类型的文件该如何去做呢?
红色的部分不是很了解请高手指点,谢谢大家。
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihefe 2011-01-20
  • 打赏
  • 举报
回复

function get_file_count($dir_name) {
static $array;
$arr = scandir($dir_name);
while (list($key, $value)=each($arr)) {
if (($value == '.') || ($value == '..')) {
continue;
}
$path=$dir_name.'/'.$value;
if (is_dir($path)) {
(filetype($path))?$ftype=filetype($path):null;
($ftype==null)?null:$array[$path]=$ftype;
get_file_count($path);
}
}
return $array;
}
echo "<pre/>";
print_r(get_file_count("/"));

free999 2011-01-20
  • 打赏
  • 举报
回复
is_dir
(PHP 4, PHP 5)

is_dir — 判断给定文件名是否是一个目录

bool is_dir ( string $filename )
如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。

Note: 本函数的结果会被缓存。更多信息参见 clearstatcache()。

daresheep 2011-01-20
  • 打赏
  • 举报
回复

while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}


这里是一个遍历的作用, 用readdir()读取目录的信息. 赋值给$file , 当然, 读完了. 就会返回 false啦

这个时候,就会跳出循环.

如果说.你要做目录类型的判断.你应该在while里面去写.


while (($file = readdir($dh)) !== false) {
$fileName ="$file/".$file;
if(filetype($fileName)=='dir') echo $file;
}
skyaspnet 2011-01-20
  • 打赏
  • 举报
回复
遍历操作判断目录即可:

is_dir
(PHP 4, PHP 5)

is_dir — 判断给定文件名是否是一个目录

说明
bool is_dir ( string $filename )
如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。


Example #1 is_dir() 例子

<?
var_dump(is_dir('a_file.txt')) . "\n";
var_dump(is_dir('bogus_dir/abc')) . "\n";

var_dump(is_dir('..')); //one dir up
?>
以上例程会输出:

bool(false)
bool(false)
bool(true)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧