PHP6 文件操作

【文件操作】
【文件读取和写入】
    文件有读 、 写  、 删除 、修改 、 创建 、权限

    内存 就好比人类的大脑 抽象处理

    硬盘 就是人类你脑袋想完的事情 存到某个位置 (纸,墙)

    读取文件就是把文件里面的内容读取到内存里面

    写入文件的时候就是把内存里面处理的东西寸到硬盘里面

    【readfile】
        读取文件并且输出到浏览器
    【file】
        将文件读取到一个数组当中
    必须要会【file_get_contents】
        就是把文件中的内容以字符串形式读取出来
        join implode(操作数组,把数组按照你指定的字符切割) explode (字符串)
    【file_put_contents】
        把内容写到一个文件里面去 如果文件不存在 创建

【文件打开,写入 ,关闭】
    【四大金刚】
        第一步
            打开
        第二步
            确定打开方式
        第三步
            读取或者写入数据
        第四步   
            关闭

    fopen(文件,模式)
        r 以只读方式打开,只能读取,文件不存在报错
        r+  读写方式打开,将文件指针指向文件头。 (覆盖写)

        w    以写入方式打开 如果文件不存在则创建 如果存在写入 请清空写入
        W+  于w相同 但是可以读取

        a 以写入方式打开 文件不存在创建 讲指针指向文件的末尾 累加写
        a+ 文件读写方式打开 累加写 指针在末尾 -----append

        x 文件存在报错 不存在创建(了解一下)
        x+ 创建并以读写方式打开,其他的行为和 'x' 一样。

        注意:如果你想的读取 把指针移动 用 fseek
        注意:以a模式打开你用fseek 操作文件的指针是没有作用的
    fwrite() //写入文件  -----fputs
    fread() //读取文件
    fclose() //关闭文件

    fseek 移动指针
    feof()测试文件指针是否到了文件结束的位置
    ftell 返回文件指针读/写的位置
    rewind — 倒回文件指针的位置 他就好比 fseek($fp , 0)

    fgetc — 从文件指针中读取字符
    fgets — 从文件指针中读取一行
    fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
    ftruncate — 将文件截断到给定的长度

    文件锁
    flock
        LOCK_SH取得共享锁定(读取的程序) 
        LOCK_EX 取得独占锁定(写入的程序) 
        LOCK_UN 释放锁定(无论共享或独占)

【文件的路径的问题】
    pathinfo(); 获取的是文件的路径的信息
    basename(); 获取文件名字
    dirname(); 返回文件的目录结构

    http_build_query 将数组变成url参数  字符串格式
    parse_url — 解析 URL,返回其组成部分 数组格式  必须要会
    parse_str — 将字符串解析成多个变量
    username=xiaoliang&password=aiwo&sex=kongkong
    echo $username,$password,$sex;

    常量
        DIRECTORY_SEPARATOR;  \ 

    目录 linux  /
    文件夹 windows \

【文件判断】 这些记着
    file_exists(); //判断文件是否存在
    is_file()//判断是否是个文件
    is_dir()//判断是否是个目录
    is_writeable//是否可写
    is_readable//可读
    is_executable//可执行

【判断文件大小,时间】
    byte
    1024b = 1kb
    1024kb = 1Mb
    1024MB = 1GB
    fisesize();

    fstat — 通过已打开的文件指针取得文件信息 看看就行了

    filectime — 取得文件的创建时间 create
    filemtime — 取得文件的修改时间 modify
    fileatime — 取得文件的上次访问时间  active

【权限问题】(了解一下就OK)
    chmod(); 改变模式

    0755
    0777  最大权限  可读可写可执行

        所有者 chown — 改变文件的所有者
        所属组 charp
        其他
    权限三种 r读 w写 x执行

【文件夹的操作】
    mkdir() //创建文件夹
                  1、 文件夹名字
                  2、 赋值权限  0777 可读可写可执行
                  3、 true 递归创建
    rmdir() //删除文件夹
            注意:如果文件夹下面还有东西, 不能删除 只能删除一级级的往上删除
    opendir() //打开文件夹
    closedir() //关闭文件夹
    readdir()  //readdir — 从目录句柄中读取条目

    unlink //删除文件
    copy //拷贝文件
    rename 重命名


    【重点】
        面试题很常见( 递归删除目录
//背你也要背下来
rm('a');
function rm($path)
{
    //打开目录
    $dir = opendir($path);
    //跳过系统目录的两个点
    readdir($dir);
    readdir($dir);
    //循环删除
    while ($newFile = readdir($dir)) {
        //拼接路径
        $newPath = $path . '/' .$newFile;
        //判断是否是文件 ,不是文件的时候再调用自己
        if (is_file($newPath)) {
            unlink($newPath);
        } else {
            rm($newPath);
            rmdir($newPath);
        }
    }
    closedir($dir);
    rmdir($path);
}

【文件上传和下载】
    作用
        1、网盘 附件
        2、种子
        3、头像
        4、相册 QQ 空间
【文件上传七伤拳】
    上传步骤
    1、
        准备form表单,查看$_FILES 看结构
    2、
        判断错误号
    3、
        判断文件是否超过了你指定的文件大小
    4、
        判断文件mime类型和文件后缀名是否符合你指定的范围
    5、
        生成文件新路径和新的文件名
    6、
        判断是不是上传文件

    7、将你上传的文件的临时文件移动到你指定的位置(写入数据库)


注意事项
    在你的php.ini里面的选项
        file_uploads = On
        max_file_uploads = 20 允许同时上传的数量
        upload_max_filesize = 2M 允许你上传文件的最大值
        upload_tmp_dir ="C:/wamp64/tmp" 上传文件的临时目录

    关于form表单问题
        提交方式必须是post
        form 里面必须写enctype="multipart/form-data"
        type 必须是file
        如果你想在上传时候在html里面写下面这句话 注意要写在最上面
        <input type="hidden" name="MAX_FILE_SIZE" value="100" />

    两个函数
        is_uploaded_file() //判断是否是上传文件
        move_uploaded_file(); //移动上传文件

【多文件上传】

    var_dump($_FILES);

    for ($i = 0; $i<count($_FILES['f']['name']); $i++) {
        $newPath = 'upload/'.$_FILES['f']['name'][$i];

        //echo $newPath.'<br />';

        move_uploaded_file($_FILES['f']['tmp_name'][$i] , $newPath);
    }
【文件下载】
    1、告诉浏览器类型

    2、告知附件

    3、告知大小 可以加也可以不加

    4、输出内容



【状态码】
    常见HTTP状态码 面试题常考
    1xx:信息
        100:继续,服务器接收到部分请求
        101:切换协议
    2xx:成功
        200:请求成功
        202:已接受但还未处理
        204:没有文档
    3xx:重定向
        301:选择跳转
        305:使用location信息
    4xx:客户端错误
        400:错误请求
        401:验证失败
        403:拒绝访问
        404:页面未找到
        405:请求方法不准许       
    5xx:服务器错误
        500:服务器内部错误
        501:不支持该请求
        502:错误网关
        503:无法服务(过载/宕机)
        504:网关超时
        505:不支持的HTTP协议版本


【多字节转换函数】
    mb_substr();
    //iconv 没事的时候可以常看看好不好
    iconv — 字符串按要求的字符编码来转换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值