资讯专栏INFORMATION COLUMN

PHP常用函数之文件系统处理

cikenerd / 2240人阅读

摘要:检测检查文件或目录是否存在检查给定文件名是否为一个存在的文件存在文件检查给定目录名是否为一个存在的目录存在目录判断给定的文件名或目录名是否存在且可读存在文件或目录可读判断给定的文件名或目录名是否存在且可写存在文件或目录可写路径解析解析文件名

检测

检查文件或目录是否存在

   file_exists ()

检查给定文件名是否为一个存在的文件(存在、文件)

   is_file ( string $filename )
   

检查给定目录名是否为一个存在的目录(存在、目录)

   is_dir ( string $filename )
   

判断给定的文件名或目录名是否存在且可读(存在、文件或目录、可读)

   is_readable ( string $filename )
   

判断给定的文件名或目录名是否存在且可写(存在、文件或目录、可写)

   is_writable ( string $filename )

路径解析

解析文件名

basename ( string $path [, string $suffix ] ) //包含有指向一个文件的全路径的字符串

解析目录名

dirname ( string $path ) //包含有指向一个文件的全路径的字符串

解析全路径

pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

目录操作

新建目录

mkdir (); //创建目录,第三个参数表示是否递归创建

删除目录

rmdir (); //只能删除空目录,非空目录必须使用递归删除

function removeDirOrFile($path){
    if(is_file($path)){
        return unlink($path);
    }
    
    if(is_dir($path)){
        $dir_handle = opendir($path);
        while(false !== ($file = readdir($dir_handle))) {
            if($file === "." || $file === "..") continue;
            $subPath = $path.DIRECTORY_SEPARATOR.$file;
            $fnname = __FUNCTION__;
            $fnname($subPath);
        }
        closedir($dir_handle);
        return rmdir($path);
    }
    
    return FALSE;
}

移动/重命名目录

rename ( string $oldname , string $newname [, resource $context ] );

获取目录内容

opendir();
readdir();
closedir();
rewind();

function readDirsTree($path,$deep=0){
    
    if(is_file($path)){
        exit(basename($path));
    }
    
    if(is_dir($path)){
        $dir_handle = opendir($path);
        while(false !== ($file = readdir($dir_handle))) {
            if($file === "." || $file === "..") continue;
            
            echo str_repeat(" ",$deep*2).iconv("GB2312","UTF-8",$file)."
"; if(is_dir($path.DIRECTORY_SEPARATOR.$file)){ $fnname = __FUNCTION__; $fnname($path.DIRECTORY_SEPARATOR.$file, $deep+1); } } closedir($dir_handle); } }

复制目录

function copyDir($dirFrom, $dirTo){
    if(is_dir($dirFrom)){
        if(!file_exists($dirTo)){
            mkdir($dirTo,0777,TRUE);
        }
        
        $dir_handle = opendir($dirFrom);
        while(false !== ($file = readdir($dir_handle))) {
            if($file === "." || $file === "..") continue;
            $fromPath = $dirFrom.DIRECTORY_SEPARATOR.$file;
            $toPath = $dirTo.DIRECTORY_SEPARATOR.$file;
            
            if(is_file($fromPath)){
                copy($fromPath, $toPath);
            }
            
            if(is_dir($fromPath)){
                $fnname = __FUNCTION__;
                $fnname($fromPath, $toPath);
            }
            
        }
        closedir($dir_handle);
        return TRUE;
    }else{
        return FALSE;
    }
}

文件操作

获取文件大小

filesize ( string $filename );

删除文件

unlink ( string $filename);

剪切/重命名文件

rename ( string $oldname , string $newname );

拷贝文件

copy ( string $source , string $dest );

写文件

file_put_contents ( string $filename , mixed $data [, int $flags = 0 ] );
一般写文件就直接使用这个函数,里面其实也是依次调用fopen(),fwrite()以及 fclose() 功能。

读文件
file_get_contents ( string $filename );
此函数只适合读一些小文件(文件大小很小的),如果读大文件,必须使用下面方法,否则内存很容易溢出

fopen ( string $filename , string $mode );
fread ( resource $handle , int $length ); //按字节数读取
fgets ( resource $handle [, int $length ] ); //默认长度为1kb,按行读取
fgetc ( resource $handle ); //按1个字节1个字节读取
fclose ( resource $handle );

获取文件修改时间
filemtime ( string $filename ); //返回时间戳

编码问题

在windows下,获取含有中文的目录名或文件名时,由于中文是GBK编码,而项目是utf-8编码,所以必须转码iconv("GBK","utf-8",$filename);

当输入的路径含有中文,由于项目是utf-8,而系统文件名或目录名都是GBK编码,所以必须转为iconv("utf-8","GBK",$path);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22203.html

相关文章

  • Codeigniter 4.0-dev 版源码学习笔记二——入口以及初始化操作

    摘要:通过这个函数可以很方便的在程序运行期间执行很多常见操作。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 index.php index.php 是整个框架的入口文件,也就是说所有的请求都要从它这里开始。因为 index.php 源码非常简洁,那么我们直接放一张源码截图,按着截图说一下源码。 showImg(https://segmentfault.com/img/re...

    _ivan 评论0 收藏0
  • PHP中的pack和unpack函数

    摘要:鉴于文件读写网络编程,或者说字节流处理的重要性,掌握这两个函数是迈向高级编程的基础。相比之下字节处理门庭冷落,相关函数寥寥无几。上述是函数简单的使用场景,接下来分别介绍和函数。如其名,函数的工作是将数据按照格式打包成字节数组。 转载请注明文章出处:https://tlanyan.me/php-pack-a... PHP有两个重要的冷门函数:pack和unpack。在网络编程,读写图像...

    Lin_R 评论0 收藏0
  • LinuxCentOS基础知识点总结

    摘要:之基础知识点总结第一章常用命令所谓的命令一般就是指指令,有很多中类型,默认的是,每一个都有自己的内置命令,数量都不相同,也就几十种。两个点加一个斜线,表示上一级目录。表示上两级目录。参数可以让命令递归删除目录及其内容,参数是,表示强制删除。 前言 Linux之CentOS常用命令操作总结。 Linux之CentOS基础知识点总结 第一章 Linux常用命令 所谓的Linux命令一般就是...

    April 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<