123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520 |
- <?php
- /*******************************************************************
- *
- * This is NOT a freeware, use is subject to license terms
- *
- *
- * @Filename io.han.php $
- *
- *
- * @Date 2011-09-28 19:16:47 1467070159 594879472 15049 $
- *******************************************************************/
- /**
- * 文件名:io.han.php
- * 版本号:JishiGou 1.0.0 beta
- * 最后修改时间: 2010年6月12日
- * 功能描述:磁盘的检测,读取,以及文件目录的操作
- */
- class IoHandler
- {
- function __construct()
- {
- }
-
- function Compare($file1, $file2)
- {
- if (md5_file($file1) == md5_file($file2))
- {
- Return true;
- }
- else
- {
- Return false;
- }
- }
-
- function SizeConvert($filesize)
- {
- if ($filesize >= 1073741824)
- {
- $filesize = round($filesize / 1073741824 , 2) . "G";
- }elseif ($filesize >= 1048576)
- {
- $filesize = round($filesize / 1048576, 2) . "M";
- }elseif ($filesize >= 1024)
- {
- $filesize = round($filesize / 1024, 2) . "k";
- }
- else
- {
- $filesize = $filesize . "b";
- }
- Return $filesize;
- }
- function ConvertSize($filesize)
- {
- Return IoHandler::SizeConvert($filesize);
- }
-
- function ReadDir($dir, $children = 0)
- {
- if(is_dir($dir) === false)Return false;;
- $dir = rtrim(str_replace("\\", "/", $dir), "/") ;
- $dirfp = @opendir($dir);
- if ($dirfp === false)
- {
- trigger_error("{$dir}目录名不存在或者无效,请检查您的目录设置!<br>", E_USER_NOTICE);
- Return false;
- }
- while (false !== ($file = readdir($dirfp)))
- {
- if ($file != '.' and $file != '..')
- {
- $abspath = $dir . '/' . $file;
- if (is_file($abspath) !== false)
- {
- $files[] = $abspath ;
- }
- if(is_dir($abspath) !== false)
- {
- if ($children == '1')
- {
- $files = array_merge((array) $files, (array) IoHandler::ReadDir($abspath, $children));
- }
- }
- }
- }
- closedir($dirfp);
- return (array) $files;
- }
-
- function ReadFile($file_name)
- {
- if (is_readable($file_name) != false)
- {
- if (function_exists('file_get_contents') != false)
- {
- $file_contents = file_get_contents($file_name);
- Return $file_contents;
- }
- else
- {
- $file_handler = @fopen($file_name, 'rb');
- if ($file_handler)
- {
- $file_contents = @fread($file_handler, filesize($file_name));
- fclose($file_handler);
- Return $file_contents;
- }
- else
- {
- Return false;
- }
- }
- }
- else
- {
- Return false;
- }
- }
-
- function WriteFile($file_name, $file_contents, $mode = 'wb')
- {
- if (($mode == 'w' || $mode == 'wb') && function_exists('file_put_contents'))
- {
- Return file_put_contents($file_name, $file_contents);
- }
- else
- {
- $file_handler = @fopen($file_name, $mode);
- if ($file_handler)
- {
- $len=fwrite($file_handler, $file_contents);
- fclose($file_handler);
- Return $len;
- }
- else
- {
- Return false;
- }
- }
- }
-
- function GetDiskList()
- {
- if (strpos(PHP_OS, 'WIN') === false)
- {
- Return false;
- }
- $disks = range('c', 'w');
- foreach($disks as $disk)
- {
- $disk = $disk . ":";
- if (is_dir($disk) !== false && disk_total_space($disk) > 0)
- {
- $disk_list[] = $disk;
- }
- }
- Return $disk_list;
- }
-
- function GetDiskSpace($disk_name, $convert_size = false)
- {
- if (is_dir($disk_name) === false)
- {
- Return false;
- }
- $disk_space['total'] = (float)disk_total_space($disk_name);
- $disk_space['free'] = (float)disk_free_space($disk_name);
- $disk_space['used'] = $disk_space['total'] - $disk_space['free'];
- @$disk_space['percent'] = (float)round($disk_space['used'] / $disk_space['total'] * 100);
- if ($convert_size === false)
- {
- Return $disk_space;
- }
- $disk_space['total'] = IoHandler::ConvertSize($disk_space['total']);
- $disk_space['free'] = IoHandler::ConvertSize($disk_space['free']);
- $disk_space['used'] = IoHandler::ConvertSize($disk_space['used']);
- $disk_space['percent'] = $disk_space['percent'] . '%';
- Return $disk_space;
- }
-
- function GetPatternFiles($path, $pattern)
- {
- if (is_dir($path) == false)
- {
- Return false;
- }
- $file_pattern = rtrim($path, '/') . "/"."*.{" . str_replace("|", ",", $pattern) . "}";
- $file_list = glob($file_pattern, GLOB_BRACE);
- if (count($file_list) == 0)
- {
- Return false;
- }
- Return $file_list;
- }
-
- function CopyFile($from, $to)
- {
- $copy_count = 0;
- if (is_string($from))
- {
- if (copy($from, $to . '/' . IoHandler::BaseName($from)))
- {
- $copy_count = 1;
- Return $copy_count;
- }
- }
- else
- {
- if (is_array($from))
- {
- if (is_dir($to) == false)
- {
- if (IoHandler::MakeDir($to) == false)
- {
- Return $copy_count;
- }
- }
- foreach($from as $file_name)
- {
- if (copy($file_name, $to . '/' . IoHandler::BaseName($file_name)))
- {
- $copy_count++;
- }
- }
- }
- }
- Return $copy_count;
- }
-
- function DeleteFile($file)
- {
- if('' == trim($file)) return ;
- $delete = @unlink($file);
- clearstatcache();
- @$filesys = preg_replace("~\/+~","\\",$file);
- if(is_file($filesys) and file_exists($filesys))
- {
- $delete = @system("del $filesys");
- clearstatcache();
- if(file_exists($file))
- {
- $delete = @chmod($file, 0777);
- $delete = @unlink($file);
- $delete = @system("del $filesys");
- }
- }
- clearstatcache();
- if(file_exists($file))
- {
- return false;
- }
- else
- {
- return true;
- }
- }
-
- function MakeDir($dir_name, $mode = 0777)
- {
- if(false!==strpos($dir_name,'\\'))
- {
- $dir_name = str_replace("\\", "/", $dir_name);
- }
- if(false!==strpos($dir_name,'/'.'/'))
- {
- $dir_name = preg_replace("#(/"."/+)#", "/", $dir_name);
- }
- if (is_dir($dir_name))
- {
- return true;
- }
- $dirs = '';
- $_dir_name = $dir_name;
- $dir_name = explode("/", $dir_name);
- if('/'==$_dir_name{0})
- {
- $dirs = '/';
- }
- foreach($dir_name as $dir)
- {
- $dir = trim($dir);
- if ('' != $dir)
- {
- $dirs .= $dir;
- if ('..' == $dir || '.' == $dir)
- {
-
- $dirs .= '/';
- continue;
- }
- }
- else
- {
- continue;
- }
- $dirs .= '/';
- if (!@is_dir($dirs))
- {
- @mkdir($dirs, $mode);
- }
- }
-
- clearstatcache();
-
- $ret = is_dir($_dir_name);
-
- return $ret;
- }
-
- function ClearDir($dir_name)
- {
- clearstatcache();
- if(is_dir($dir_name) == false)Return false;
- $dir_handle = opendir($dir_name);
- while(($file = readdir($dir_handle)) !== false)
- {
- if($file != '.' and $file != "..")
- {
- clearstatcache();
- if(is_dir($dir_name . '/' . $file))
- {
- IoHandler::RemoveDir($dir_name . '/' . $file);
- }
- if(is_file($dir_name . '/' . $file))
- {
- @unlink($dir_name . '/' . $file);
- }
- }
- }
- closedir($dir_handle);
- Return true;
- }
-
- function RemoveDir($dir_name)
- {
- clearstatcache();
- if(is_dir($dir_name) == false)Return false;
- $dir_handle = opendir($dir_name);
- while(($file = readdir($dir_handle)) !== false)
- {
- if($file != '.' and $file != "..")
- {
- clearstatcache();
- if(is_dir($dir_name . '/' . $file))
- {
- IoHandler::RemoveDir($dir_name . '/' . $file);
- }
- if(is_file($dir_name . '/' . $file))
- {
- IoHandler::DeleteFile($dir_name . '/' . $file);
- }
- }
- }
- closedir($dir_handle);
- rmdir($dir_name);
- Return true;
- }
-
- function CopyDir($from, $to, $children = true)
- {
- if(is_dir($from) == false)Return false;
- if(is_dir($to) == false)
- {
- if(IoHandler::MakeDir($to) == false)
- {
- Return false;
- }
- }
- $from_handle = opendir($from);
- while(($file = readdir($from_handle)) !== false)
- {
- if($file != '.' and $file != '..')
- {
- $from_abs_path = $from . '/' . $file;
- $to_abs_path = $to . '/' . $file;
- if(is_dir($from_abs_path) != false and $children == true)
- {
- IoHandler::MakeDir($to_abs_path);
- IoHandler::CopyDir($from_abs_path, $to_abs_path, $children);
- }
- if(is_file($from_abs_path) != false)
- {
- if(copy($from_abs_path, $to_abs_path) == false)
- {
- Return false;
- }
- }
- }
- }
- closedir($from_handle);
- Return true;
- }
-
- function FilePermission($file_name)
- {
- Return substr(base_convert(fileperms($file_name), 10, 8), -4);
- }
- function FileExt($file_name, $no_case = 1)
- {
- $ext = trim(substr($file_name, strrpos($file_name, '.')));
- if($no_case)
- {
- $ext = strtolower($ext);
- }
-
- return $ext;
- }
-
- function BaseName($path, $suffix = false)
- {
- $name = trim($path);
- $name = str_replace('\\', '/', $name);
- if(strpos($name, '/') !== false)
- {
- $name = substr(strrchr($path, '/'), 1);
- }
- else
- {
- $name = ltrim($path, '.');
- }
- if($suffix)
- {
- $suffix = strrchr($name, '.');
- $name = str_replace($suffix, '', $name);
- }
- return $name;
- }
-
- function updateFileArray($file, $name, $array)
- {
-
- $out = "<?php\n";
- foreach($array as $key => $val)
- {
- $out .= "\${$name}['{$key}'] = '{$val}';\n";
- }
- $out .= '?>';
- if(IoHandler::WriteFile($file, $out, "wb"))
- {
- Return true;
- }
- else
- {
- Return false;
- }
- }
-
- function ReadDiskSpace($drive)
- {
- $disk_space['size']['total'] = disk_total_space($drive);
- $disk_space['size']['free'] = disk_free_space($drive);
- $disk_space['size']['used'] = $disk_space['size']['total'] - $disk_space['size']['free'];
- $disk_space['size_converted']['used'] = IoHandler::SizeConvert($disk_space['size']['total'] - $disk_space['size']['free']);
- $disk_space['size_converted']['total'] = IoHandler::SizeConvert($disk_space['size']['total']);
- $disk_space['size_converted']['free'] = IoHandler::SizeConvert($disk_space['size']['free']);
- Return $disk_space;
- }
-
- function initPath($path)
- {
- $return = $path;
- $path = (substr($path, -1) == '/') ? $path : dirname($path);
- if ( !is_dir($path) )
- {
- $list = explode('/', $path);
- $path = (substr($path, 0, 1) == '/') ? '/' : '';
- foreach ($list as $i => $dir)
- {
- if ($dir == '') continue;
- $path .= $dir.'/';
- clearstatcache();
- if ( !is_dir($path) )
- {
- @mkdir($path, 0777);
- }
- }
- }
- return $return;
- }
- }
- ?>
|