• [笔记]PHP文件系统处理


    PHP文件系统处理

    ***所有的文件处理都是使用系统函数完成的.
    ***php文件处理 是 基于linux/unix系统为模型的, 在linux下完全没问题
    在windows下有一些 有差别.
    #### 文件读写操作,与C语言等 处理方式相同.

    文件处理的作用:

    1.所有的项目,都离不开文件处理.
    2.把数据长时间保持,需要文件
    3.建立网站缓存 / 服务器中的文件操作

    文件处理:

    1.用系统的函数获取 文件的类型, 等等
    #### 文件的 类型
    #### 文件系统类型
    以linux/unix委模型的,
    在windows中只能获取file,dir或unknown类型(三种)
    在linux下 block,char, dir, fifo, file, link, unknown(七种)
    block : 块设备文件, 某个磁盘分区, 软驱,光驱,等
    char : 字符设备, 输出过程I/O中以字符为单位传输的设备,键盘,打印机等
    *dir : 目录也是文件的一种, linux中通常文件,类型不同,
    *fifo: 命令管道,信息从一个进程传入另一个进程
    file:
    link: 链接文件, (快捷方式) ln -s

    filetype("目录或文件名")

    is_file -- 判断给定文件名是否为一个正常的文件
    is_dir -- 判断给定文件名是否是一个目录

    is_executable -- 判断给定文件名是否可执行

    is_link -- 判断给定文件名是否为一个符号连接
    is_readable -- 判断给定文件名是否可读
    is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
    is_writable -- 判断给定的文件名是否可写
    is_writeable -- is_writable() 的别名

    2.文件的属性 获取
    file_exists -- 检查文件或目录是否存在

    filesize -- 取得文件大小

    is_readable -- 判断给定文件名是否可读
    is_writable -- 判断给定的文件名是否可写

    fileatime -- 取得文件的上次访问时间
    filemtime -- 取得文件修改时间
    filectime -- 取得文件的 inode 修改时间
    fileactime() -- 访问.修改时间
    state -- 查看文件状态

    3.获取文件位置*(目录相关的函数)
    4.文件操作 ( 创建 删除 移动)
    5.文件的打开 关闭 (读文件内容, 向文件写内容)
    6.文件内部 移动指针(读取文件中指定位置的数据, 只读取中间几个字符...)
    7. 文件锁定机制
    能用鼠标完成的,都能用程序完成(**操作对象在远程主机上*)

    目录处理

    1.目录的遍历
    2.目录的创建 删除
    3.目录的复制
    对文件来说有系统函数, ***目录没有


    5.统计目录大小

    文件上传和下载
    1.上传
    2.下载

    /*
    和文件路径相关的函数::

    相对路径
    是以当前目录为准的(相对于当前目录的 上级和下级目录)
    . 代表当前目录
    .. 代表上一级目录

    ./php/apache/index.php
    php/apache/index.php
    login.php
    ./login.php

    ../images/tpl/logo.gif


    ****** 路径分隔符号: *****
    linux/unix /
    windows

    ** (php手册)常量 DIRECTORY_SEPARATOR (string) - 为不同平台,提供目录分隔符
    windows
    linux /

    <b>不管是什么操作系统, php的目录分隔符号 都支持 / (正斜杠)</b>

    在php和apache配置文件中, 如果需要指定目录, 也使用 / 作为目录分隔符


    ***************************


    绝对路径
    是从根开始的

    / - 根路径

    /images/index.php -
    ? 指的是 操作系统的根
    ? 还是 存放网站的文档根目录
    ** 分情况 **
    如果是在服务器中执行(通过php文件处理函数执行)路径, 根指的就是os的根.
    如果程序(html,css,js)是下载到客户端, 在访问服务器中的文件时,只有通过apache访问,根 也就指的是文档根目录.

    basename(url) - 获取文件名
    dirname(url) - 获取目录
    pathinfo() - 路径信息
    */

    /*
    * 文件的操作


    创建文件
    touch

    删除 文件
    unlink

    移动 文件(也用于重命名)
    rename(当前文件路径, 目标文件路径)

    复制 文件
    copy(当前, 目标)

    重命名 文件
    rename()


    所有 对文件的操作 一定要有PHP执行这个文件的权限, apache, 启动apache的用户 具有权限.
    (windows - 比较危险, 一般apache都是管理员运行
    linux - 一般文件/目录 只读, 少数可读写)

    chgrp -- 改变文件所属的组
    chmod -- 改变文件模式
    chown -- 改变文件的所有者

    ls -s / ll
    _rwxrwxrwx => 777
    _ 类型 _文件 d - 目录 l-link b-clock
    1.rwx - 这个文件拥有者具有读写执行权限
    2.rwx - 拥有者所在的组
    3.rwx - 其他用户对这个文件的权限
    r 4
    w 2
    x 1

    7 7 7 => 4+2+1 4+2+1 4+2+1
    6 4 4
    7 5 5

    chmod 777 demo.php - 可读可写可执行
    chmod u=rwx, g=rwx, o=r

    chmod 644 demo.html - 可读写只读只读

    chown MySQL "demo.php"

    chgrp apache "demo.php"


    filegroup -- 取得文件的组
    fileowner -- 取得文件的所有者

    ****

    本节主要介绍
        PHP文件的常规  读和写 的操作

        详细介绍了
            file_get_contents()
            file_put_contents()
        以及
            file()
            readfile()
        的应用
        通过改写配置文件和提取sql语句的示例  演示几个读取文件的操作.

    ****文件读写
            读取文件
                file_get_contents()_php5+_简单读写推荐
                file()
                readfile()
            ******以上都是全部读取*****不足: 不能读取部分,也不能指定的区域*****
                fopen()-打开文件
                    fread()-读取多少个字符
                    fgetc()-读单个字符
                    fgets()-读单行字符

                
            写入文件
                file_put_contents()_php5+_简单读写推荐 (
                    如果文件不存在,创建并写入;
                    如果文件存在, 删除原内容,写入新的)
                (以上是覆盖模式的写法)
                // 不足: 不能用追加的方式写; 也不能加锁.
                fopen()
                    fwrite()  -   fputs()



            本地文件: 可以使用 相对路径和绝对路径
                ./test.txt


            远程文件:
                http://www.baidu.com
                http://www.163.com
                (远程文件一般没有写权限)


            fclose -- 关闭一个已打开的文件指针


    ****
    ****
    ****

    */
    // echo file_put_contents("./abc.txt",'asddfa');

    /*$str=file_get_contents('./abc.txt');
    echo $str;
    */

    // echo file_put_contents("test1.txt", "www.lampbrother.net");//返回写入的字符数

    /*读取网站网页内容  _ 分析出 网页中的图像标记 */
    /*$str=file_get_contents("http://www.zol.com.cn");
    // echo $str;

    preg_match_all('/<imgs*src=.*?s*/?>/i', $str,$images);
    echo "<pre>";
    print_r($images);
    echo "</pre>";
    */

    // 演示- 示例
    //表单提交 - 演示用提交内容改写配置文件
    // if(isset($_POST["sub"])){
    /*    echo "<pre>";
        print_r($_POST);
        echo "</pre>";*/

        // setConfig($_POST);
    // }

    // 单开一个函数,把修改写入配置文件
    /*function setConfig($post){ // 三步
        $configFile="config.inc.php";
        // 读出配置文件内容
        $str=file_get_contents($configFile);
        // 修改内容
        $pattern=array();
        $rep=array();
        foreach ($post as $key => $value) {
            $pattern[]="/define("{$key}"s*.*?);/i";
            $rep[]="define("{$key}","{$value}");";
        }
    */
    /*
        echo "<pre>";
        print_r($pattern);
        print_r($rep);*/
    /*
        $str=preg_replace($pattern, $rep, $str);

        // 写入配置文件
        file_put_contents($configFile, $str);
    }

    */

    // 演示readfile()
    // readfile("abc.txt");// 读出 并 直接输出/**/
                        //直接输出不能自己处理啦
    /*readfile(){
        echo $string;
    }
    // 上面的一条语句相当于下面
    file_get_contents("abc.txt"){
        return $string;
    }*/

    /*
    $arr=file("abc.txt");// 一行是数组中一个元素,
    // 数组尺寸是文件
    echo "<pre>";
    print_r($arr);
    */

    /*
        // file()- 经常用
        读出来 是一个数组,
        
         [案例]把sql文件中的sql语句都提取出来,
                 注释/空行 都过滤
    */
    // 读取 所有行
    $lines=file("imooc.sql");
    $sqlstr="";//合并到sql字符串
    foreach ($lines as $line) {
        $line=trim($line);// 去掉两端的空格
        // 过滤空行    
        if ($line!="") {
            if (!($line{0}=="#" || $line{0}.$line{1}=="--")) {
                $sqlstr.=$line;
            }

        }
    }
    // 分割(按分号;)
    $asql_arr=explode(";", $sqlstr);

    // echo $sqlstr;

    echo "<pre>";
    print_r($asql_arr); // 一共175行



    <!--  表单界面 -->
    <!-- <form action="file_rw.php" method="post">
        host: <input type="text" name="DB_HOST"><br>
        user: <input type="text" name="DB_USER"><br>
        pass: <input type="text" name="DB_PWD"><br>
        dbname: <input type="text" name="DB_NAME"><br>
        tabPREFIX: <input type="text" name="DB_PREFIX"><br>
        <input type="submit" name="sub" value="mod"><br>
    </form> -->









  • 相关阅读:
    int、bigint、smallint 和 tinyint
    我的fedora9安装后配置
    系统引导设置与管理EasyBCD与VistaBootPRO
    从Xml文档内部引用Xml Schema验证
    linux开机顺序
    OS引导-笔记
    Logic Volume笔记
    Service笔记
    python中若类属性与实例属性同名
    解析JavaScript中的null与undefined
  • 原文地址:https://www.cnblogs.com/lizunicon/p/4120821.html
Copyright © 2020-2023  润新知