在 Windows 中,我打开一个目录,读取文件,并为每个文件运行 stat 以确定大小等。
问题是,当我在文件夹 SHORTCUT 上运行 stat 时,它会以 FOLDER 的形式返回,而我在位掩码中看不到任何mode
可能表明这一点的地方。. 中的所有文件夹快捷方式都是如此c:\Documents and Settings\myUserName\
。
对于这些快捷方式,is_file
returns false
、is_dir
returnstrue
和is_link
在 XP 中不受支持。
这是我的代码的摘录(它已被修剪,因此可能存在错误):
if(($h=@opendir($root))!==false){
while (false !== ($file = readdir($h))){
if(!($file=="." || $file=="..")){
if( $stat = @lstat($root . $file) ){
$ary[0] = $file;
$ary[1] = $root;
$ary[2] = Date("m/d/y H:i:s", $stat['mtime']);
if($stat['mode'] & 040000){
$ary[3]="dir";
$ary[4]=0;
}else{
$ary[3] ="file";
$ary[4] = $stat['size'];
}
echo(json_encode($ary));
}
}
}
}
对此的解决方法将不胜感激......
编辑:Winterblood 的解决方案几乎奏效了
首先-我的错-这是一台win7机器。
感谢 Winterblood 的快速周转 - 这适用于几个快捷方式,PHP 手册就是这么说的......但是,
c:\users\myUserName\AppData\Local\Application 数据
(和其他人)仍然作为目录返回,而 winSCP 正确地将它们视为快捷方式。事实上,“模式”是040777,与许多真实文件夹完全相同。
还有其他建议吗?