MAC隐藏的系统文件

时间:2014-02-14 19:10:52

标签: php macos file loops

使用此PHP代码循环浏览图像目录时,我需要过滤掉我的MAC开发计算机坚持创建的系统文件。

首先我只需要过滤掉

.DS_Store 

文件,最近出现的文件也是如此:

._.DS_Store


    if ($handle = opendir($server_dir)) { //if we could open the directory...
        while (false !== ($entry = readdir($handle))) { //then loop through it...
            if ( ($entry != ".") && ($entry != "..") && (strpos($entry, ".DS_Store") !== false) && (strpos($entry, "._.DS_Store") !== false) ) { //and skip the . and .. entities
                $m .= '
                '.$client_dir.$entry.'
                ';
            }            
        }
        closedir($handle);      
    }
    else {
        echo("Can't open $dir, does it exist? Does www-user have permission to read it?");
    }  

我需要过滤掉隐藏系统文件的其他名称还是这两个名称?

有没有比我这样做更好的处理方式?

3 个答案:

答案 0 :(得分:1)

你可以替换它:

 (strpos($entry, ".DS_Store") !== false) && (strpos($entry, "._.DS_Store") !== false)

由此:

 !stristr($entry, '.DS_Store')

并且有.localized,在某些地方看到了。正如@deceze所说,unix系统充满了.配置文件,这完全取决于你正在处理的目录。

或者甚至更好,您可以通过以下方式替换所有if语句:

if(substr($entry, 0, 1)!='.')

答案 1 :(得分:1)

Dot files”,以点开头的文件,是“隐藏”文件的UNIX系统的长期惯例。各种各样的程序都创造了大量的程序。转到终端并使用ls -a进行游戏。惯例是要意识到它们并忽略它们,除非你知道你在做什么。因此,请忽略以.开头的所有文件。

答案 2 :(得分:0)

可能有大量不同的隐藏文件,例如.svn.git,以及上面的示例尝试此操作...它会检查第一个字符是否为{{1 }}

.