PHP简单的文件搜索类
简单的一个PHP文件搜索类,使用本类可以很清楚的列出所有的磁盘驱动器,对于查找文件来说必不可说,自定义系统,默认的是 utf-8 格式,下面有具体的实例,可作为网站的一个文件搜索类来管理网站的上传图片,附件,下载等文件,绝对是一个绝佳的小程序,在使用时,适当的修改一下。
PHP代码:
<?php
header('Content-Type:text/html;charset=UTF-8');
class Files
{
//默认的操作系统
private $_system = 'WINNT';
//当前目录
private $_currentDir = null;
//如果是Windows系统,列出所有的磁盘驱动器
private $_disks = null;
//所有文件
private $_files = array();
//所有目录
private $_dirs = array();
/**
*
* 构造方法
*
* @return void
*/
public function __construct()
{
//初始化操作系统类型
$this->_system = PHP_OS;
//防止超时
set_time_limit(0);
}
/**
*
* 类的说明
*
* @return strings
*/
public function __toString()
{
return '文件系统类。';
}
/**
*
* 获取成员属性
*
* @return mixed
*/
public function __get($name)
{
return $this->$name;
}
/**
*
* 设置成员属性
*
* @return Files
*/
public function __set($name, $value)
{
$this->$name = $value;
return $this;
}
/**
*
* 获取当前服务器的操作系统
*
* @return string
*/
public function getSystem()
{
return $this->_system;
}
/**
*
* 检测当前系统的所有磁盘
*
* @return array
*/
public function getDisks()
{
$sys = stristr($this->getSystem(), 'win');
if (!emptyempty($sys)) {
$diskString = 'CDEFGHIJKLMNOPQRSTUVWXYZ';
for ($i=0; $i<strlen($diskString); $i++) {
if (is_dir($diskString[$i] . ':\\')) {
$this->_disks[$i] = $diskString[$i] . ':';
}
}
} else {
$this->_disks = '/';
}
return $this->_disks;
}
/**
*
* 获取当前录
*
* @return string
*/
public function getCurrentDir()
{
return $this->_currentDir;
}
/**
*
* 设置当前目录
*
* @param string
*
* @return string
*/
public function setCurrentDir($currentDir)
{
$this->_currentDir = $currentDir;
return $this;
}
/**
*
* 获取当前单个磁盘的空间使用信息
* 单位:字节(B)
*
* @return array
*/
public function getDiskInfo()
{
return array('total'=>disk_total_space($this->getCurrentDir()), 'free'=>disk_free_space($this->getCurrentDir()));
}
/**
*
* 获取目录下的所有文件
*
* @return array
*/
public function getDirectoryFiles()
{
$this->setDirectoryFiles($this->getCurrentDir());
return array('directorys'=>$this->_dirs, 'files'=>$this->_files);
}
/**
*
* 搜索目录下的所有文件
*
* @return boolean
*/
private function setDirectoryFiles($file)
{
if (!is_dir($file)) {
array_push($this->_files, $file);
} else {
array_push($this->_dirs, $file);
if (is_dir($file)) {
$dh = opendir($file);
if ($dh) {
while (false !== ($filename = readdir($dh))) {
if ($filename != '.' && $filename != '..') {
if (!is_dir($file . DIRECTORY_SEPARATOR . $filename)) {
array_push($this->_files, $file . DIRECTORY_SEPARATOR . $filename);
} else {
$this->setDirectoryFiles($file . DIRECTORY_SEPARATOR . $filename);
}
}
}
}
}
}
return true;
}
/**
*
* 析构方法
*
* @return void
*/
public function __destruct()
{
/*......*/
}
}
echo $f = new Files();
print_r($f->getDisks());
print_r($f->setCurrentDir('d:\c')
->getDirectoryFiles());
?>