常用的文件和目录操作函数

<?php
/**
 * 创建目录(支持多级目录)
 *
 * @param string $dir 目录
 * @return bool 创建目录成功=true|创建目录失败=false
 */
function make_dir(string $dir): bool
{
    return !(!is_dir($dir) && !mkdir($dir, 0755, true) && !is_dir($dir));
}

/**
 * 删除文件或目录
 *
 * @param string $path 文件或目录的路径
 * @return bool 删除成功=true|删除失败=false
 */
function remove(string $path): bool
{
    $ok = true;

    if (is_file($path) && is_writable($path)) { // 删除目标是文件
        $ok = unlink($path);
    } elseif (is_dir($path) && is_writable($path)) { // 删除目标是目录
        $scandir = array_diff(scandir($path), ['.', '..']); // 扫描目录
        $counter = count($scandir); // 获取目录下的文件总数(文件+直接子目录)

        // 开始删除目录下的文件和子目录(如果有的话)
        foreach ($scandir as $file) {
            if (remove("$path/$file") === true) {
                $counter--;
            } else {
                break;
            }
        }

        // 文件和子目录已全部删除,可以删除目标目录(说明:rmdir()只能删除空目录)
        $ok = $counter === 0 && rmdir($path);
    }

    return $ok;
}

// 重命名或移动目录
rename('/tmp', '/home/user/login/docs'); // 重命名成功返回true,否则返回false

// 目录是否存在
is_dir('/path/to/my/is_dir'); // 目录存在返回true,否则返回false

// 删除目录(目录必须是空的,而且要有相应的权限;失败时会产生一个E_WARNING级别的错误)
rmdir('/path/to/my/rmdir'); // 删除成功返回true,失败返回false

// 目录是否可读
is_readable('/path/to/my/is_readable'); // 如果目录存在并且可读则返回true,否则返回false

// 目录是否可写
is_writable('/path/to/my/is_writable'); // 如果目录存在并且可写则返回true,否则返回false

// 新建文件
file_put_contents('/path/to/file_put_contents.txt', '文件内容');
// 返回写入到文件内数据的字节数,失败时返回false;
// 警告:此函数可能返回布尔值FALSE,但也可能返回等同于FALSE的非布尔值,应使用“===”运算符来测试此函数的返回值

// 重命名或移动文件
rename('/tmp/tmp_file.txt', '/home/user/login/docs/my_file.txt'); // 重命名成功返回true,否则返回false

// 文件是否存在(该函数也可检查目录是否存在,但建议使用is_dir()检查目录是否存在)
file_exists('/path/to/file_exists.txt'); // 文件存在返回true,否则返回false

// 删除文件
unlink('/path/to/unlink.txt'); // 删除成功返回true,失败返回false;发生错误时会产生一个E_WARNING级别的错误

// 复制文件
copy('example.txt', 'example.txt.bak'); // 复制成功返回true,否则返回false

// 文件是否可读
is_readable('test.txt'); // 如果文件存在并且可读则返回true,否则返回false

// 文件是否可写
is_writable('test.txt'); // 如果文件存在并且可写则返回true,否则返回false

// 将上传的文件移动到新位置(专门处理通过PHP的HTTP POST上传机制所上传的文件)
move_uploaded_file('/tmp/php/php1h4j1o', '/path/to/move_uploaded_file.txt');

Copyright © 2024 码农人生. All Rights Reserved