php文件操作类
php文件操作类
* $file->createDir(‘a/1/2/3’); 测试建立文件夹 (建一个a/1/2/3文件夹
* $file->createFile(‘b/1/2/3’); 测试建立文件 (在b/1/2/文件夹下面建一个3文件本贴由FastMVC首发,谢谢关注FastMVC
* $file->createFile(‘b/1/2/3.exe’); 测试建立文件 (在b/1/2/文件夹下面建一个3.exe文件
* $file->copyDir(‘b’,’d/e’); 测试复制文件夹 (建立一个d/e文件夹,把b文件夹下的内容复制进去
* $file->copyFile(‘b/1/2/3.exe’,’b/b/3.exe’); 测试复制文件 (建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去本贴由FastMVC首发,谢谢关注FastMVC
* $file->moveDir(‘a/’,’b/c’); 测试移动文件夹 (建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹
* $file->moveFile(‘b/1/2/3.exe’,’b/d/3.exe’); 测试移动文件 (建立一个b/d文件夹,并把b/1/2中的3.exe移动进去
* $file->unlinkFile(‘b/d/3.exe’); 测试删除文件 (删除b/d/3.exe文件
* $file->unlinkDir(‘d’); 测试删除文件夹 (删除d文件夹
namespace app\e;
/**
* 操纵文件类
*
* 例子:
* $file->createDir('a/1/2/3'); 测试建立文件夹 (建一个a/1/2/3文件夹
* $file->createFile('b/1/2/3'); 测试建立文件 (在b/1/2/文件夹下面建一个3文件
* $file->createFile('b/1/2/3.exe'); 测试建立文件 (在b/1/2/文件夹下面建一个3.exe文件
* $file->copyDir('b','d/e'); 测试复制文件夹 (建立一个d/e文件夹,把b文件夹下的内容复制进去本贴由FastMVC首发,谢谢关注FastMVC
* $file->copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件 (建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去
* $file->moveDir('a/','b/c'); 测试移动文件夹 (建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹
* $file->moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件 (建立一个b/d文件夹,并把b/1/2中的3.exe移动进去
* $file->unlinkFile('b/d/3.exe'); 测试删除文件 (删除b/d/3.exe文件
* $file->unlinkDir('d'); 测试删除文件夹 (删除d文件夹
*/
class Files {
/**
* 建立文件夹
*
* @param string $aimUrl
* @return viod
*/
public function createDir($aimUrl) {
$aimUrl = str_replace('\\', '/', $aimUrl);
$aimDir = '';
$arr = explode('/', $aimUrl);
foreach ($arr as $str) {
$aimDir.= $str.'/';
if (!file_exists($aimDir)) {
mkdir($aimDir);
}
}
}
/**
* 读取文件
*
* @param string $dir 文件和路径
* @return boolean
*/
public function open($dir) {
return file_get_contents($dir);
}
/**
* GBK
*
* @param string $str
* @return boolean
*/
public function gbk($str) {
return iconv("utf-8", "gbk", $str);
}
/**
* utf8
*
* @param string $str
* @return boolean
*/
public function utf8($str) {
return iconv("gbk", "utf-8", $str);
}
/**
* 文件大小
*
* @param string $str
* @return boolean
*/
function sizeStr($size) {
if(!is_numeric($size)&&is_file($size))$size=filesize($size);
$units = array('B', 'KB', 'MB', 'GB', 'TB');
for ($i = 0; $size > 980 && $i < 4; $i++) $size /= 1024;本贴由FastMVC首发,谢谢关注FastMVC
return $size>0?round($size, 2).$units[$i]:'0B';
}
/**
* 写入文件
*
* @param string $dir 文件和路径
* @param boolean $con 内容
* @param boolean $type 操作类型
* @return boolean
*/
public function write($dir, $con = '',$type="w") {
$path =pathinfo($dir);
if(!is_dir($path['dirname'])){
$this->createDir($path['dirname']);
}
$file = fopen($dir,$type);
$ret=fwrite($file,$con);
fclose($file);
return $ret;
}
/**
* 建立文件
*
* @param string $aimUrl
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
public function createFile($aimUrl, $overWrite = false) {
if (file_exists($aimUrl) && $overWrite == false) {
return false;
} elseif (file_exists($aimUrl) && $overWrite == true) {
$this->unlinkFile($aimUrl);
}
$aimDir = dirname($aimUrl);
$this->createDir($aimDir);
touch($aimUrl);
return true;
}
/**
* 移动文件夹
*
* @param string $oldDir
* @param string $aimDir
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
public function moveDir($oldDir, $aimDir, $overWrite = true) {
$aimDir = str_replace('\\', '/', $aimDir);
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
$oldDir = str_replace('\\', '/', $oldDir);
$oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/';
if (!is_dir($oldDir)) {
return false;
}
if (!file_exists($aimDir)) {
$this->createDir($aimDir);
}
@$dirHandle = opendir($oldDir);
if (!$dirHandle) {
return false;
}
while (false !== ($file = readdir($dirHandle))) {
if ($file == '.' || $file == '..') {
continue;
}
if (!is_dir($oldDir.$file)) {
$this->moveFile($oldDir.$file, $aimDir.$file, $overWrite);
} else {
$this->moveDir($oldDir.$file, $aimDir.$file, $overWrite);
}
}
closedir($dirHandle);
return rmdir($oldDir);
}
/**
* 移动文件
*
* @param string $fileUrl
* @param string $aimUrl
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
public function moveFile($fileUrl, $aimUrl, $overWrite = true) {
if (!file_exists($fileUrl)) {
return false;
}
if (file_exists($aimUrl) && $overWrite = false) {
return false;
} elseif (file_exists($aimUrl) && $overWrite = true) {
$this->unlinkFile($aimUrl);
}
$aimDir = dirname($aimUrl);
$this->createDir($aimDir);
rename($fileUrl, $aimUrl);
return true;
}
/**
* 删除文件夹
*
* @param string $aimDir
* @return boolean
*/
public function unlinkDir($aimDir) {
$aimDir = str_replace('\\', '/', $aimDir);
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';本贴由FastMVC首发,谢谢关注FastMVC
if (!is_dir($aimDir)) {
return false;
}
$dirHandle = opendir($aimDir);
while (false !== ($file = readdir($dirHandle))) {
if ($file == '.' || $file == '..') {
continue;
}
if (is_dir($aimDir.$file)) {
$this->unlinkDir($aimDir.$file);
} else {
$this->unlinkFile($aimDir.$file);
}
}
closedir($dirHandle);
return rmdir($aimDir);
}
/**
* 生成文件列表
*
* @param string $aimDir
* @return boolean
*/
public function fileList($aimDir,$deep=true,$clear=true) {
if($clear)$this->fileList_=$this->dirList_=array();
$aimDir = str_replace('\\', '/', $aimDir);
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
if (!is_dir($aimDir)) {
return false;
}
$dirHandle = opendir($aimDir);
while (false !== ($file = readdir($dirHandle))) {
$file=$this->utf8($file);
if ($file == '.' || $file == '..') {
continue;
}
if (is_dir($aimDir.$file)) {
$this->dirList_[]=$aimDir.$file;
if($deep)$this->fileList($aimDir.$file,true,false);
} else {
$this->fileList_[]=$aimDir.$file;
}
}
return $this->fileList_;
}
/**
* 删除文件
*
* @param string $aimUrl
* @return boolean
*/
public function unlinkFile($aimUrl) {
if (file_exists($aimUrl)) {
unlink($aimUrl);
return true;
} else {
return false;
}
}
/**
* 复制文件夹
*
* @param string $oldDir
* @param string $aimDir
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
public function copyDir($oldDir, $aimDir, $overWrite = false) {
$aimDir = str_replace('\\', '/', $aimDir);
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
$oldDir = str_replace('\\', '/', $oldDir);
$oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/';
if (!is_dir($oldDir)) {
return false;
}
if (!file_exists($aimDir)) {
$this->createDir($aimDir);
}
$dirHandle = opendir($oldDir);
while (false !== ($file = readdir($dirHandle))) {
if ($file == '.' || $file == '..') {
continue;
}
if (!is_dir($oldDir.$file)) {
$this->copyFile($oldDir.$file, $aimDir.$file, $overWrite);
} else {
$this->copyDir($oldDir.$file, $aimDir.$file, $overWrite);
}
}
return closedir($dirHandle);
}
/**
* 复制文件
*
* @param string $fileUrl
* @param string $aimUrl
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
public function copyFile($fileUrl, $aimUrl, $overWrite = false) {本贴由FastMVC首发,谢谢关注FastMVC
if (!file_exists($fileUrl)) {
return false;
}
if (file_exists($aimUrl) && $overWrite == false) {
return false;
} elseif (file_exists($aimUrl) && $overWrite == true) {
$this->unlinkFile($aimUrl);
}
$aimDir = dirname($aimUrl);
$this->createDir($aimDir);
copy($fileUrl, $aimUrl);
return true;
}
/**
* 清理名称
*
* @param string $str
* @return string $str
*/
public function clearStr($str,$s=' '){
return preg_replace('/[^\w\x{4e00}-\x{9fa5}-]+/u',$s,$str);
}
/**
* 清理名称
*
* @param string $str
* @return string $str
*/
public function repDir($dir,$pot='.'){
$pot=substr($dir,0,1)==$pot?$pot:'';
return $pot.preg_replace('/[\/\.]*\//u','/',$dir,-1);
}
/**
* 设置缓存
*
* @param string $str
* @return string $str
*/
public function cache($name,$value){
$path=dirname(__FILE__).'/file/filesCache.json';
$val=json_decode($this->open($path),true);
if(isset($value)){
$val[$name]=$value;
if(is_null($value))unset($val[$name]);
$this->write($path,json_encode($val));
}
return isset($name)?$val[$name]:$val;
}
/**
* 文件加密
*
* @param string $str
* @return string $str
*/
public function enBase64($dir,$path=null){
$f['dir']=$path?$this->repDir($path.$dir):$dir;
$f['tmp']=$dir;
$gbk=$this->gbk($dir);
if(is_file($gbk)){
$f['md5']=md5_file($gbk);
$f['dir64']=base64_encode($this->gbk($f['dir']));
$f['con64']=base64_encode($this->open($gbk));
$f['space']=strlen($f['con64'])+180;
$f['size']=filesize($gbk);
$f['info']='文件读取成功';
}else{
$f['info']='文件打开失败';
}
return $f;
}
/**
* 文件解密
*
* @param string $str
* @return string $str
*/
public function deBase64(&$f){
$f['gbk']=base64_decode($f['dir64']);
$f['con64']=base64_decode($f['con64']);
$this->write($f['gbk'],$f['con64']);
if($f['md5']===md5_file($f['gbk'])){
$f['ready']=true;
$f['info']=$f['ready']?'文件写入成功':'文件写入失败';
}else{
$f['ready']=false;
$f['info']='文件写入失败';
}
return $f;
}
}
?>
原文链接:http://www.fastmvc.com/blog/1274.html