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