菜鸟常忽略的基础 - FileHelper

本文导航

  1. 方法介绍
  • 作者:KK

  • 发表日期:2016.9.7


类名:yii\helpers\FileHelper(文件助手)

对于经常操作文件的应用来说这个类会在项目里很多地方能起到帮助

但对于普通项目偶尔要操作文件的话,主要可以用到这几个方法:createDirectorynormalizePathcopyDirectoryremoveDirectory


方法介绍

  • createDirectory($path, $mode = 0775, $recursive = true)

    作用:创建完整的文件目录,并且是自动创建所有级别不存在的目录

    示例:

    FileHelper::createDirectory('D:/a/b/c');
    

    如果D盘下没有a目录,它会自动创建a,然后再创建b和c

    然而如果用自带的mkdir函数来创建的话,它会说a目录不存在,就算a存在,也会说b不存在,最终不能创建c


  • normalizePath($path, $ds = DIRECTORY_SEPARATOR)

    作用:将一个路径正常化,比如D:\a\..\b会转换成D:\b

    示例:

    var_export([
    	'D:\a\..\b' => FileHelper::normalizePath('D:\a\..\b'), // D:\b
    	'D:\a\b\..' => FileHelper::normalizePath('D:\a\b\..'), // D:\a
    	'./' => FileHelper::normalizePath('./'), // .
    	'./a.jpg' => FileHelper::normalizePath('./a.jpg'), // a.jpg
    	'../a.jpg' => FileHelper::normalizePath('../a.jpg'), // ..\a.jpg
    ]);
    

  • copyDirectory($src, $dst, $options = [])

    作用:完整地复制目录,如果用copy函数也会和mkdir一样,目标目录遇到不存在的父目录就会报错,而这个函数会自动创建不存在的父目录

    示例:

    $srcDir = 'D:/a/b/c';
    FileHelper::createDirectory($srcDir); //先创建被复制的目录
    	
    //如果D盘下没有b目录,则这些都会全部被自动创建
    FileHelper::copyDirectory($srcDir, 'D:\b\b\c\d\e');
    

  • removeDirectory($dir, $options = [])

    作用:删除目录,如果目录内有文件都会自动删除掉这些文件

    但自带的rmdir函数只能删除空目录,所以有文件的话要先用unlink删除才能rmdir

    这里我就不演示了,相信你已经明白了前面那些函数对目录的递归处理,这个方法也是用了一样的思想,对开发者暴露了最简单的用法,以免开发者再写这些麻烦的代码


另外还有个我偶尔会用到的方法findFiles在指定的目录里查找指定的文件,比如upload/*.jpg会返回一个数组,全是jpg文件,有需求的时候自己看看官方注释和参数表用一下吧