Skip to content

components disk

tolizhan edited this page Jul 6, 2023 · 9 revisions

磁盘封装

of_base_com_disk::file($filePath, $data = false, $protected = false) 从一个文件读取或写入数据

  • filePathstring
    文件路径,或已经加锁的数据流
  • datastring, array, boolean, null
    数据流 : null=返回文件链接源
    写入时 : 字符串=写入数据, 数组=会用serialize转化
    读取时 : false=读取数据,true=会用unserialize转化
  • protectedboolean, null
    数据流 : true=写入锁,false=读取锁,null=尾部写入锁
    写入时 : true=向写入的字符串前追加"<?php exit; ?> "15个字符,false=不追加,null=尾部写入
    读取时 : true=文件已写入"<?php exit; ?> "保护, false=文件没写入保护
  • 返回值
    数据流 : 成功=资源, 失败=false
    写入时 : 成功=true, 失败=false
    读取时 : 成功=数据, 失败=null, 反序列失败=异常
<?php
of_base_com_disk::file(ROOT_DIR . '/test.txt', array('12'));             //向根目录的test.txt文件中写入一个数组
of_base_com_disk::file(ROOT_DIR . '/test.txt', true);                    //读取后返回写入的数组
$fp = of_base_com_disk::file(ROOT_DIR . '/test.txt', null, null);        //读取独享锁连接
of_base_com_disk::file($fp, true);                                       //独享锁读取文本

of_base_com_disk::each(&$dir, &$data, $type = null) 遍历目录结构

  • dirstring
    指定遍历的目录
  • dataarray, boolean
    接收的目录列表, 当type为true时:
        在循环遍历时传入false, 则不会继续遍历
        将对应目录设置为false, 则不会继续遍历该目录
  • typeboolean
     null =(默认)返回指定目录列表
     false=一次返回深层数据
     true =循环返回每个目录的数据(单目录大于一万条拆分多次)
<?php
$path = ROOT_DIR . '/test';                                 //测试目录
while (of_base_com_disk::each($path, $data, true)) {        //遍历结束返回false
    print_r($data);                                         //{磁盘路 : false=文件 true=目录, ...}
    foreach($data as $dir => &$isDir) {
        if ($isDir) {                                       //是目录
            $baseName = basename($dir);                     //获取文件夹名
            if ($baseName[0] === 'a') {                     //以"a"开头的文件夹
                $isDir = false;                             //设置false不继续遍历
            }
        }
    }
    of_base_com_disk::each($path, $data, null);             //永远返回 $path 子目录, 不影响遍历
}

of_base_com_disk::none($path) 判断文件夹是否为空

  • pathstring
    磁盘目录
<?php
of_base_com_disk::none('C:/windows/temp');      //true=不存在或空文件夹, false=非空文件夹

of_base_com_disk::temp($isFile = true) 获取临时路径

  • isFilebool
    是否生成临时文件,true(默认)=返回临时文件路径,false=返回临时文件夹路径
<?php
of_base_com_disk::temp(false);    //大概返回 C:/windows/temp
of_base_com_disk::temp(true);     //大概返回 C:/windows/temp/随机数的文件名

of_base_com_disk::delete($path, $clear = false) 删除指定文件或文件夹

  • pathstring
    指定删除路径
  • clearbool
    清除父层空文件夹, 默认=false
<?php
of_base_com_disk::delete(ROOT_DIR . '/test/demo', true);    //删除文件夹后检测如果/test为空,那么/test也删除,再依次检测上一层是否为空

of_base_com_disk::copy($source, $dest, &$exclude = array()) 复制指定文件或文件夹

  • sourcestring
    指定源路径
  • deststring
    指定目标路径
  • excludearray
    排除路径
<?php
of_base_com_disk::delete(ROOT_DIR . '/test', ROOT_DIR . '/toTest', array(
    ROOT_DIR . '/test/demo' => true                                                  //demo文件夹不拷贝
));
Clone this wiki locally