PHP操作文件常用函数

【获取文件信息的函数】
basename($path[,扩展名]) 返回文件路径中去掉路径后的文件名称。"/root/a.txt"输出a.txt;带上.txt输出a。
dirname($path); 查看目录名称。"/root/a.txt" 输出 /root。
pathinfo($path) 返回数组。"/root/a.txt" 输出array(dirname=>root,basename=>a.txt,extension=>txt)。
realpath($path);返回文件的绝对路径。realpath(“../../aaa.txt”); 输出 D:/aaa.txt。
filetype($path); 返回文件类型。 filesize($path); 计算文件大小(字节数)。
fileatime() 文件上次被访问的时间,filemtime() 文件上次被修改的时间。filesize()返回文件大小。file_exists()检查文件或目录是否存在。
disk_total_space() 返回一个目录所在的磁盘分区大小(字节数)。
fileperms() 获取文件的权限。
getimagesize("1.jpg"); 获取图片尺寸
 
【操作目录的函数】
mkdir() 创建目录:mkdir(‘image’,0777)
opendir() 打开目录:if(opendir("D:/www")) echo 'ok'; else echo 'fail';
closedir() 关闭目录。rename()重命名目录。rmdir() 删除空目录。
readdir() 读取文件目录,返回该目录下的所有文件名称。
$dir = opendir(“D:/www”);
while( ($file=readdir($dir)) !== false  ){
  echo $file;
}
closedir($dir);
 
【操作文件的函数】
fopen() 打开文件;fclose() 关闭文件;touch()创建文件;unlink()删除文件;copy()复制文件;rename()重命名文件;flock()锁定文件。
fwrite() 和 fputs() 和 file_put_contents($filename [,FILE_APPEND]): 写入文件。
is_writable() 检查文件是否可写,判断文件权限,同类is_readable() 检查文件是否可读,返回布尔值。
fread() 读取文件。 fgets() 读取文档中的一行。 fgetss() 读取文档一行并去掉HTML和PHP标记。
move_uploaded_file($upload_file,$path); 上传图片(form表单必须设置enctype="multipart/form-data"属性)。
stat() 返回关于文件的信息,本函数的结果会被缓存,使用clearstatcache()来清除缓存。
PHP输出CSV和EXCEL两种简单的方法:header("Content-type:application/vnd.ms-excel");header("Content-Disposition:filename=php100.xls");
文件指针函数:rewind()、fseek()、feof()、ftell() 。
 
【下载文件】
header("Content-Type:image/gif");
header('Content-Disposition: attachment; filename="logo3333.gif"');
header('Content-Length:'.filesize("logo.gif"));
readfile("logo.gif");
     
【从一个标准 url 里取出文件的扩展名】
function getExt($url){
   $arr = parse_url($url);
   $file = basename($arr['path']);
   $ext = explode(".",$file);
   return $ext[1];
}
$str = "http://www.sina.com.cn/abc/de/fg.php?id=1";
echo getExt($str);// 输出:php
 
【删除非空目录】
function deldir($dirname){
    if(file_exists($dirname)) {
        $dir=opendir($dirname);
        while($filename=readdir($dir)){
             if($filename!="."&& $filename!=".."){
                  $file=$dirname."/".$filename;
                  if(is_dir($file)){
                       deldir($file);//使用递归删除子目录  
                  }else{
                       echo'删除文件<b>'.$file.'</b>成功';
                       unlink($file);
                  }
             }
        }
        closedir($dir);
        echo'删除目录<b>'.$dirname.'</b>成功';
        rmdir($dirname);
    }
}
 
【复制非空目录】
function copydir($dirsrc, $dirto){
      if(is_file($dirto)){
          echo"目标不是目录不能创建";
          return;
      }
      if(!file_exists($dirto)){
          mkdir($dirto);
          //echo "创建目录".$dirto."成功!";
      }         
      $dir=opendir($dirsrc);
      while($filename=readdir($dir)){
          if($filename!="."&& $filename!=".."){
               $file1=$dirsrc."/".$filename;
               $file2=$dirto."/".$filename;
               if(is_dir($file1)){
                    copydir($file1, $file2);//递归处理
              }else{
                    copy($file1, $file2);
               }
          }
      }
      closedir($dir);
}
 
【PHP读取一个目录下的文件个数】
function FileCount($dir){
  global $count;
  if(is_dir($dir) && file_exists($dir)){
    $ob=scandir($dir);
    foreach($ob as $file){
      if($file=="."||$file==".."){
        continue;
      }
      $file=$dir."/".$file;
      if(is_file($file)){
        $count++;
      }elseif(is_dir($file)){
        FileCount($file);
      }
    }
  }  
}
//调用方法
$count=0;
FileCount("DataRoom");
echo $count;exit;
 
【php获取目录中的所有文件名】
$handler = opendir('pic/common');
while( ($filename = readdir($handler)) !== false ) {
      if($filename != "." && $filename != ".."){
        echo $filename;
      }
}
closedir($handler);
【判断远程图片(文件)是否存在】
function check_remote_file_exists($url) {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_NOBODY, true); // 不取回数据
    $result = curl_exec($curl);  // 发送请求
    $found = false;
    if ($result !== false) {
        $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);  
        if ($statusCode == 200) {
            $found = true;   
        }
    }
    curl_close($curl);
    return $found;
}
 
原文地址:https://www.cnblogs.com/rxbook/p/10912653.html