PHP接触笔记十一

文件编程

目录操作

mkdir(路径名)        //创建文件,成功返回true,失败返回false

删除目录

rmdir(文件名)        //删除文件夹

读取目录

将文件夹(路径)按照资源方式打开

opendir();    //打开资源,包含指定目录下的所有文件
readdir();    //从资源中读取执政所在位置的文件名字,然后指针下移,直到移除资源 

关闭目录(资源)

closedir();    //关闭资源

其他操作

dirname(路径);    //得到上层目录
realpath(路径);    //得到真实路径(目录路径)
id_dir(路径);      //判断指定文件是否是路径
scandir();         //获取一个路径下的所有文件信息,相当于封装版的opendir/readdir/colsedir,以数            
                   //形式返回

递归遍历目录

在指定一个目录的情况下,将其下的所有文件,及其目录内部的所有内容都输出出来

递归算法:将大问题切成相似的小问题(最小单位),然后调用解决大问题的方法解决小问题

函数封装:函数如果能够自己内部调用自己,则该函数称之为递归函数

案列

<?php
    /*
        1.设计一个能够遍历一层文件的函数
        2.找到递归点,文件遍历得到的是文件目录,应该调用当前函数(调用自己)
        需要构造路径(遍历得到的结果只是文件的名字)
        需要排除.和..
        3.找到递归出口,遍历完文件夹之后没有任何子文件夹(函数不再调用自己)
    */


    //递归遍历文件夹

    //定义路径
    $dir = 'directory';

    //创建函数:能够访问指定路径下的所有文件,并且还能判断目录是文件

    function my_scandir($dir){
        //保证文件安全,不是路径没有必要往下,是路径才遍历
        if(!is_dir($dir))
        die($dir).'<br/>';
        //读取全部内容,遍历输出
        $files = scandir($dir);
        foreach($files as $file){       //$files是目录,$file是文件名
            // echo $file.'<br>';
            //排除.和..
            if($file == '.'||$file =='..') continue;    //continue从新循环,代码不再向下执行

            //构造路径
            $file_dir = $dir.'/'.$file;
            echo $file_dir.'<br/>';
        }
            //判断路径
            if(is_dir($file_dir)){
                //递归点
                my_scandir($file_dir);  //遍历结束后就没有内容(没有文件夹),相当于自带递归出口
            }
    }
    my_scandir($dir);

?>

 文件操作

file_get_contents(文件路径);          //获取指定文件的所有内容
file_put_contents(文件路径,内容);    //将指定内容写入指定文件内,如果文件不存在则自动创建文件
                                     //路径不存在则不能创建      

常见文件操作函数

foprn():打开一个文件资源

fread():从打开资源中读取指定长度的内容(字节)

fwrite():向打开资源中写入指定内容

fclose():关闭资源 

其他函数

is_file():是否为文件

filesize():获取文件大小

file_exists():判断文件是否存在

unlink():取消文件名字与磁盘地址连接(删除文件)

filemtime():获取文件最后一次修改的时间

参考文档

文件下载

从服务器将文件通过http协议传输到浏览器,浏览器不解析保存成相应的文件。

提供下载的方式:<a href="文件路径"></a>

缺点:a标签能够让浏览器自动下载的内容有限,浏览器发现如果解析不了的文件才会启用下载;a标签下载的文件存储路径需要通过href属性显示,会暴露服务器存储数据的位置(不安全)

php下载

读取文件内容,以文件流的形式传递给浏览器,并在响应头中告知浏览器不要解析,激活下载框,实现下载

案例:

<?php
    //PHP文件下载

    //设定解析字符集
    $file = 'a.txt';
    header('Content-type:text/html;charset = utf-8');

    //设定响应头, 以文件流形式传输数据
    header('Conten-type:application/octem-strem');
    header('Accepr-ranges:bytes');      //以字节的方式计算
    header('Content-dispositino:attachment;filename='.$file);   
    header('Accept-length:'.filesize($file));

    $f = @fopen($file,'r') or die();   
    //方案一    直接读然后输出
    while($row = fread($f,1024)){
        echo $row;
    } 
    //方案二    判定是否可读,然后再读
    while(!feof($f)){
        echo fread($f,1024);
    }

    //关闭资源
    fclose($f);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值