<?php
/*****************
* fileOnLineManager.class.php
* 文件在线管理类
*
*****************/
class FileOnLineManager{
private $path;//指定管理的目录
public function __construct($var_path){
$this->path=$var_path;
}
/*
* @function 获得文件及目录列表
* @param string $path 指定目录
* @return array
*/
public function getFileAndDirectory($path){
$resource=opendir($path);
$arr=array();
while(($item=readdir($resource))!==false){
if($item!="." && $item!=".."){
if(is_dir($path."/".$item)){
//$arr["dir"][]=$item;
$var_dir_pathname=$path."/".$item;
$row["name"]=$item;
$row["type"]=$this->getFileType($var_dir_pathname);
$row["size"]=$this->getDirectorySize($var_dir_pathname);
$row["is_readable"]=$this->getFileReadable($var_dir_pathname);
$row["is_writeable"]=$this->getFileWriteable($var_dir_pathname);
$row["is_executable"]=$this->getFileExecutable($var_dir_pathname);
$row["ct"]=$this->getFileCtTime($var_dir_pathname);
$row["mt"]=$this->getFileMtTime($var_dir_pathname);
$row["at"]=$this->getFileATime($var_dir_pathname);
$arr[]=$row;
}
if(is_file($path."/".$item)){
//$arr["file"][]=$item;
$var_file_pathname=$path."/".$item;
$row["name"]=$item;
$row["type"]=$this->getFileType($var_file_pathname);
$row["size"]=$this->getFileSize($var_file_pathname);
$row["is_readable"]=$this->getFileReadable($var_file_pathname);
$row["is_writeable"]=$this->getFileWriteable($var_file_pathname);
$row["is_executable"]=$this->getFileExecutable($var_file_pathname);
$row["ct"]=$this->getFileCtTime($var_file_pathname);
$row["mt"]=$this->getFileMtTime($var_file_pathname);
$row["at"]=$this->getFileATime($var_file_pathname);
$arr[]=$row;
}
}
}
closedir($resource);
return $arr;
}
/*
* @function 获取文件类型
*/
public function getFileType($var_file_pathname){
return filetype($var_file_pathname);
}
/*
* @function 获得文件大小
* @param string $var_file_pathname 文件的完整路径名
* @return string
*/
public function getFileSize($var_file_pathname){
$size=filesize($var_file_pathname);
return $this->transSize($size);
}
/*
* @function 转换文件大小单位
* @param int $var_size
* @return string
*/
public function transSize($var_size){
$size=$var_size;
$row=array("byte","KB","MB","GB","TB");
$i=0;
while($size>=1024){
$size=$size/1024;
$i++;
}
$result=round($size,2).$row[$i];
return $result;
}
/*
* @function 获得文件是否可读
* @param string $var_file_pathname
* @return boolean 返回true表示可读,false表示不可读
*/
public function getFileReadable($var_file_pathname){
if(is_readable($var_file_pathname)){
return true;
}
else{
return false;
}
}
/*
* @function 获得文件是否可写
* @param string $var_file_pathname
* @return boolean 返回true表示可写,false表示不可写
*/
public function getFileWriteable($var_file_pathname){
if(is_writeable($var_file_pathname)){
return true;
}
else{
return false;
}
}
/*
* @function 获得文件是否可执行
* @param string $var_file_pathname
* @return boolean 返回true表示可执行,false表示不可执行
*/
public function getFileExecutable($var_file_pathname){
if(is_executable($var_file_pathname)){
return true;
}
else{
return false;
}
}
/*
* @function 获得文件inode的修改时间
* @param string $var_file_pathname
* @return int|false 返回int时间戳,返回false表示获取失败
*/
public function getFileCtTime($var_file_pathname){
return filectime($var_file_pathname);
}
/*
* @function 获得文件修改时间
* @param string $var_file_pathname
* @return int|false 返回int时间戳,返回false表示获取失败
*/
public function getFileMtTime($var_file_pathname){
return filemtime($var_file_pathname);
}
/*
* @function 获得文件的访问时间
* @param string $var_file_pathname
* @return int|false 返回int时间戳,返回false表示获取失败
*/
public function getFileATime($var_file_pathname){
return fileatime($var_file_pathname);
}
/*
* @function 获取目录大小
* @param string $var_dir_pathname
* @return string
*/
public function getDirectorySize($var_dir_pathname){
$sum=0;
global $sum;
$handler=opendir($var_dir_pathname);
while(($item=readdir($handler))!==false){
if($item!="." && $item!=".."){
if(is_dir($var_dir_pathname."/".$item)){
$this->getDirectroySize($var_dir_pathname."/".$item);
}
if(is_file($var_dir_pathname."/".$item)){
$sum+=filesize($var_dir_pathname."/".$item);
}
}
}
closedir($handler);
return $this->transSize($sum);
}
}
$path="./file";
$fileOnLineManager=new FileOnLineManager($path);
$result=$fileOnLineManager->getFileAndDirectory($path);
print_r($result);
?>