PHP file操作类 判断文件或目录是否存在 复制删除文件等

本文分享了一个PHP文件操作类,提供了文件系统操作的各种实用功能,包括文件和目录的创建、删除、复制,以及文件内容的读写等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天与大家分享一个PHP文件操作类,进行常规的FSO文件操作,实现的功能有:PHP获取指定文件大小、判断文件及目录是否存在、删除文件或目录、复制文件或目录、同时创建多级目录、读取文件内容到字符串中、将字符串写入文件、获取文件名后缀、获取目录大小等,使用的PHP函数有:file_exists()、mkdir()、filesize、copy、unlink等,这些知识对熟悉PHP中的文件系统操作,也就是FSO相当有用了:

001<?php
002//PHP判断文件夹和目录是否存在,并获取指定文件大小
003class file_dir
004{
005    //检查目录或文件是否存在
006    function check_exist($filename)    
007    {
008        if(file_exists($filename))
009        {
010            return true;
011        }else   return false;
012    }
013// 一次只能创建一级目录
014function create_dir($dirname,$mode=0777)   
015{
016    if(is_null($dirname) || $dirname=="")   return false;
017    if(!is_dir($dirname))
018    {
019        return mkdir($dirname,$mode);
020    }
021}
022//可同时创建多级目录
023function createDir($aimUrl)    
024{
025       $aimUrl = str_replace('\\', '/', $aimUrl);
026       $aimDir = '';
027       $arr = explode('/', $aimUrl);
028       foreach ($arr as $str)
029       {
030        $aimDir .= $str . '/';
031           if (!file_exists($aimDir))
032           {
033               mkdir($aimDir);
034           }
035       }
036}
037//删除目录
038function delete_dir($dirname)      
039{
040    if($this->check_exist($dirname) and is_dir($dirname))
041    {
042        if(!$dirhandle=opendir($dirname)) return false;
043        while(($file=readdir($dirhandle))!==false)
044        {
045            if($file=="." or $file=="..")   continue;
046            $file=$dirname.DIRECTORY_SEPARATOR.$file//表示$file是$dir的子目录
047            if(is_dir($file))
048            {
049                $this->delete_dir($file);
050            }else{
051                unlink($file);
052            }
053        }
054        closedir($dirhandle);
055        return rmdir($dirname);
056    }
057            else    return false;
058}
059//复制目录
060function copy_dir($dirfrom,$dirto)     
061{
062    if(!is_dir($dirfrom))   return false;
063    if(!is_dir($dirto))     mkdir($dirto);
064    $dirhandle=opendir($dirfrom);
065    if($dirhandle)
066    {
067        while(false!==($file=readdir($dirhandle)))
068        {
069            if($file=="." or $file=="..")   continue;
070            $filefrom=$dirfrom.DIRECTORY_SEPARATOR.$file//表示$file是$dir的子目录
071            $fileto=$dirto.DIRECTORY_SEPARATOR.$file;
072            if(is_dir($filefrom))
073            {
074                $this->copy_dir($filefrom,$fileto);
075            }
076            else
077            {   if(!file_exists($fileto))
078                copy($filefrom,$fileto);
079            }
080        }
081    }
082    closedir($dirhandle);
083    }
084//获取目录大小
085function getdir_size($dirname)
086{
087    if(!file_exists($dirname) or !is_dir($dirname))  return false;
088    if(!$handle=opendir($dirname))  return false;
089    $size=0;
090    while(false!==($file=readdir($handle)))
091    {
092        if($file=="." or $file=="..")   continue;
093        $file=$dirname."/".$file;
094        if(is_dir($file))
095        {
096            $size+=$this->getdir_size($file);
097        }else{
098            $size+=filesize($file);
099        }
100 
101    }
102    closedir($handle);
103    return $size;
104}
105// 单位自动转换函数
106function getReal_size($size)
107{
108    $kb=1024;
109    $mb=$kb*1024;
110    $gb=$mb*1024;
111    $tb=$gb*1024;
112    if($size<$kb)    return $size."B";
113    if($size>=$kb and $size<$mbreturn round($size/$kb,2)."KB";
114    if($size>=$mb and $size<$gbreturn round($size/$mb,2)."MB";
115    if($size>=$gb and $size<$tbreturn round($size/$gb,2)."GB";
116    if($size>=$tb)   return round($size/$tb,2)."TB";
117}
118//复制文件
119function copy_file($srcfile,$dstfile)
120{
121    if(is_file($srcfile))
122    {
123        if(!file_exists($dstfile))
124        return copy($srcfile,$dstfile);
125        }
126    else    return false;
127}
128//删除文件
129function unlink_file($filename)    
130{
131     if($this->check_exist($filename) and is_file($filename))
132     {
133        return unlink($filename);
134     }else  return false;
135}
136//获取文件名后缀
137function getsuffix($filename)          
138{
139    if(file_exists($filename) and is_file($filename))
140     {
141        return end(explode(".",$filename));
142     }
143}
144//将字符串写入文件
145function input_content($filename,$str)     
146{
147     if(function_exists(file_put_contents))
148     {
149            file_put_contents($filename,$str);
150     }else{
151            $fp=fopen($filename,"wb");
152            fwrite($fp,$str);
153            fclose($fp);
154     }
155}
156//将整个文件内容读出到一个字符串中
157function output_content($filename)         
158{
159     if(function_exists(file_get_contents))
160        {
161            return file_get_contents($filename);
162        }else{
163            $fp=fopen($filename,"rb");
164            $str=fread($fp,filesize($filename));
165            fclose($fp);
166            return $str;
167        }
168}
169//将文件内容读出到一个数组中
170function output_to_array($filename)    
171{
172     $file=file($filename);
173     $arr=array();
174     foreach($file as $value)
175     {
176        $arr[]=trim($value);
177     }
178     return $arr;
179 }
180}//类结束
181?>

上述文件可保存为file_dir.class.php,使用方法如下:

1include 'file_dir.class.php';
2$dir=new file_dir;//建立类对象
3$size=$dir->getdir_size("D:/wamp/www/class/images");//通过这个类获取指定文件大小
4echo $dir->getReal_size($size);//通过这个类获取指定文件大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值