Dir::listFile PHP Method

listFile() public method

+---------------------------------------------------------- 取得目录下面的文件信息 +---------------------------------------------------------- +----------------------------------------------------------
public listFile ( mixed $pathname, $pattern = '*' )
$pathname mixed 路径 +----------------------------------------------------------
    public function listFile($pathname, $pattern = '*')
    {
        static $_listDirs = array();
        $guid = md5($pathname . $pattern);
        if (!isset($_listDirs[$guid])) {
            $dir = array();
            $list = glob($pathname . $pattern);
            foreach ($list as $i => $file) {
                //$dir[$i]['filename']    = basename($file);
                //basename取中文名出问题.改用此方法
                //编码转换.把中文的调整一下.
                $dir[$i]['filename'] = preg_replace('/^.+[\\\\\\/]/', '', $file);
                $dir[$i]['pathname'] = realpath($file);
                $dir[$i]['owner'] = fileowner($file);
                $dir[$i]['perms'] = fileperms($file);
                $dir[$i]['inode'] = fileinode($file);
                $dir[$i]['group'] = filegroup($file);
                $dir[$i]['path'] = dirname($file);
                $dir[$i]['atime'] = fileatime($file);
                $dir[$i]['ctime'] = filectime($file);
                $dir[$i]['size'] = filesize($file);
                $dir[$i]['type'] = filetype($file);
                $dir[$i]['ext'] = is_file($file) ? strtolower(substr(strrchr(basename($file), '.'), 1)) : '';
                $dir[$i]['mtime'] = filemtime($file);
                $dir[$i]['isDir'] = is_dir($file);
                $dir[$i]['isFile'] = is_file($file);
                $dir[$i]['isLink'] = is_link($file);
                //$dir[$i]['isExecutable']= function_exists('is_executable')?is_executable($file):'';
                $dir[$i]['isReadable'] = is_readable($file);
                $dir[$i]['isWritable'] = is_writable($file);
            }
            $cmp_func = create_function('$a,$b', '
			$k  =  "isDir";
			if($a[$k]  ==  $b[$k])  return  0;
			return  $a[$k]>$b[$k]?-1:1;
			');
            // 对结果排序 保证目录在前面
            usort($dir, $cmp_func);
            $this->_values = $dir;
            $_listDirs[$guid] = $dir;
        } else {
            $this->_values = $_listDirs[$guid];
        }
    }

Usage Example

Beispiel #1
0
 /**
  * 获取所有微博节点列表 - 预留后台查看、编辑微博模板文件
  * @param boolean $ignore 从微博设置里面获取,默认为false
  * @return array 所有微博节点列表
  */
 public function getNodeList($ignore = false)
 {
     if (false === ($feedNodeList = S('FeedNodeList'))) {
         //应用列表
         $apps = C('DEFAULT_APPS');
         $appList = model('App')->getAppList();
         foreach ($appList as $app) {
             $apps[] = $app['app_name'];
         }
         //获得所有feed配置文件
         require_once ADDON_PATH . '/library/io/Dir.class.php';
         $dirs = new Dir(SITE_PATH, '*.feed.php');
         foreach ($apps as $app) {
             $app_config_path = SITE_PATH . '/apps/' . $app . '/Conf/';
             $dirs->listFile($app_config_path, '*.feed.php');
             $files = $dirs->toArray();
             if (is_array($files) && count($files) > 0) {
                 foreach ($files as $file) {
                     $feed_file['app'] = $app;
                     $feed_file['filename'] = $file['filename'];
                     $feed_file['pathname'] = $file['pathname'];
                     $feed_file['mtime'] = $file['mtime'];
                     $feedNodeList[] = $feed_file;
                 }
             }
         }
         S('FeedNodeList', $feedNodeList);
     }
     return $feedNodeList;
     // $xml = simplexml_load_file( $this->_getFeedXml() );
     // $feed = $xml->feedlist->feed;
     // $list = array();
     // foreach($feed as $key => $v) {
     // 	$app = (string)$v['app'];
     // 	$type = (string)$v['type'];
     // 	$list[$app][] = array(
     // 		'app'=>$app,
     // 		'type'=>$type,
     // 		'info'=>(string)$v['info']
     // 	);
     // }
     // return $list;
 }