当前位置:首页>编程>php>PHP基本文件操作封装

PHP基本文件操作封装

以下是一个简单的php类,可以实现文件或者文件夹操作(复制,粘贴,剪贴,重命名,打开,编辑,保存,压缩,解压):

class FileManager { 
    private $baseDir;
    public function __construct($baseDir) {
        $this->baseDir = rtrim($baseDir, '/');
    }
    public function copy($from, $to) {
        if (is_file($this->baseDir . '/' . $from)) {
            copy($this->baseDir . '/' . $from, $this->baseDir . '/' . $to);
        } else {
            mkdir($this->baseDir . '/' . $to);
            $files = scandir($this->baseDir . '/' . $from);
            foreach ($files as $file) {
                if ($file != '.' && $file != '..') {
                    $this->copy($from . '/' . $file, $to . '/' . $file);
                }
            }
        }
    }
    public function move($from, $to) {
        if (is_file($this->baseDir . '/' . $from)) {
            rename($this->baseDir . '/' . $from, $this->baseDir . '/' . $to);
        } else {
            mkdir($this->baseDir . '/' . $to);
            $files = scandir($this->baseDir . '/' . $from);
            foreach ($files as $file) {
                if ($file != '.' && $file != '..') {
                    $this->move($from . '/' . $file, $to . '/' . $file);
                }
            }
            rmdir($this->baseDir . '/' . $from);
        }
    }
    public function rename($oldName, $newName) {
        rename($this->baseDir . '/' . $oldName, $this->baseDir . '/' . $newName);
    }
    public function open($filename) {
        return file_get_contents($this->baseDir . '/' . $filename);
    }
    public function save($filename, $content) {
        file_put_contents($this->baseDir . '/' . $filename, $content);
    }
    public function compress($path, $zipname) {
        $zip = new ZipArchive;
        if ($zip->open($this->baseDir . '/' . $zipname, ZipArchive::CREATE) === TRUE) {
            if (is_file($this->baseDir . '/' . $path)) {
                $zip->addFile($this->baseDir . '/' . $path, basename($path));
            } else {
                $files = new RecursiveIteratorIterator(
                    new RecursiveDirectoryIterator($this->baseDir . '/' . $path),                 RecursiveIteratorIterator::LEAVES_ONLY
                );
                foreach ($files as $file) {
                    if (!$file->isDir()) {
                        $filePath = $file->getRealPath();
                        $relativePath = substr($filePath, strlen($this->baseDir . '/'));
                        $zip->addFile($filePath, $relativePath);
                    }
                }
            }
            $zip->close();
            return true;
        } else {
            return false;
        }
    }
    public function extract($zipname, $path = '') {
        $zip = new ZipArchive;
        if ($zip->open($this->baseDir . '/' . $zipname) === TRUE) {
            $zip->extractTo($this->baseDir . '/' . $path);
            $zip->close();
            return true;
        } else {
            return false;
        }
    }
}

使用实例

$fm = new FileManager('/path/to/directory');
$fm->copy('filename.txt', 'newfile.txt');  // 复制文件
$fm->copy('dir1', 'dir2');  // 复制文件夹
$fm->move('oldfile.txt', 'newfile.txt');  // 剪切文件
$fm->move('olddir', 'newdir');  // 剪切文件夹
$fm->rename('oldfile.txt', 'newfile.txt');  // 重命名文件
$content = $fm->open('filename.txt');  // 打开文件
$fm->save('filename.txt', 'new content');  // 保存文件
$fm->compress('dir1', 'archive.zip');  // 压缩文件或文件夹
$fm->extract('archive.zip', 'extracted');  // 解压文件

 

文章链接:https://www.zydown.com/293.html
文章标题:PHP基本文件操作封装
文章版权:当下资源网 (https://www.zydown.com) 所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!
本文最后更新发布于2024年03月08日 20时49分01秒,某些文章具有时效性,若有错误或已失效,请在下方留言或联系:2877741347@qq.com

给TA打赏
共{{data.count}}人
人已打赏

相关文章

php编程

PHP使用file_get_contents函数怎么构造参数

2023-10-10 23:28:48

php

php怎么批量修改图片宽高?

2024-1-22 19:22:35

{{yiyan[0].hitokoto}}
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索