zoukankan      html  css  js  c++  java
  • DAY30

     

         第1章 文件编程的基础

    1.1 看一个实际的需求

    说明:在我们的web开发中, 我们会使用到文件上传,下载,创建文件,删除用户,创建目录等等,这时我们就需要使用文件编程.

     

    1.2 文件的基本概念

    数据源, php开发中,数据存放的几种形式, 图示:

    1.3 文件的输入流和输出流

    1. php的文件编程中,文件是以字符流或者字节流两种形式来操作.
    2. 画图输入流和输出流

    说明

    (1) 输入和输出都是针对php程序(即内存)

    (2) 读入到php程序【读入内容】, 输入流

    (3) php程序,把内容保存到文件中,输出流.

    1.4 php操作文件的方式

     


        第2章 php文件编程

    2.1 php文件编程函数一览

     一、判断普通文件和目录
        1.is_file()//判断给定文件名是否为一个正常的文件
        2.is_dir()//判断给定文件名是否是一个目录

    二、文件的属性
        1.file_exists()//检查文件或目录是否存在
        2.filesize()//取得普通文件大小
        3.is_readable()//判断给定文件名是否可读
        4.is_writable()//判断给定的文件名是否可写
        5.filectime()//获取文件的创建时间
        6.filemtime()//获取文件的修改时间
        7.fileatime()//取得文件的上次访问时间
        8.stat()//获取文件大部分属性值

    三、目录的基本操作
         1.basename()//返回路径中的文件名部分
         2.dirname()//返回路径中的目录部分
         3.pathinfo()//返回文件路径的信息
         4.opendir()//打开目录句柄
         5.readdir()//从目录句柄中读取条目,返回目录中下一个文件的文件名
         6.rewinddir()//倒回目录句柄
         7.closedir()//关闭目录句柄
         8.mkdir()//新建目录
         9.rmdir()//删除指定的空目录
         10.scandir()//列出指定路径中的文件和目录

    四、文件的基本操作
         1.fopen()//打开文件或者 URL
         2.fread()//读取文件
         3.fgets()//从文件指针中读取一行
       4.feof()//测试文件指针是否到了文件结束的位置
         5.fwrite()//写入文件
         6.rewind()//倒回文件指针的位置
         7.flock()//轻便的咨询文件锁定
         8.ftruncate()//将文件截断到给定的长度
         9.fclose()//关闭一个已打开的文件指针
         10.file() //把整个文件读入一个数组中
         11.copy()//拷贝文件
         12.unlink()//删除文件
         13.file_get_contents()//将整个文件读入一个字符串
         14.file_put_contents()//将字符串写入文件中
         15.rename()//重命名一个文件或目录
         16.readfile()//读入一个文件并写入到输出缓冲

    2.2 获取文件的信息

    •   获取文件信息的函数

    •  第一种方式

     

     

    •  第二种方式

     

    2.3 读取文件的内容,并显示在网页

     

    •  第一种方式

     

    上面方式的分析: 我们是一次性的将内容读入到内存,这样处理大文件不是很好,因此这样我们可以使用第二种读取文件的方式.(可以设置缓冲)

    •  第二种方式

     

    •  第三种方式

    第三种方式最简洁,使用的是最多的. file_get_contents  file_put_contents()

     

    小结:在实际开发中如何选择方式

    (1) 如果我们处理的文件很大(100m),建议使用第二种

    (2) 如果是普通的文件,没有特殊的要求,建议使用第三种.

     

    2.4 第四种方式读取配置文件 config.ini

     

    2.5 上机练习

     

    xx.ini 的格式

    属性名1=属性值1

    属性名2=属性值2

    2.6 如何创建文件,并写入内容

    •  基本介绍

    php中,没有一个专门的函数来创建文件。他是通过fopen函数来实现.

    function fopen($file_name, $mode);

    说明$mode取值:

    (1) $mode 'r' , 表示只读方式打开,将文件指针指向文件头.

    (2) $mode 'r+' , 表示方式打开,将文件指针指向文件头

    (3) $mode 'w', 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之

    (4) $mode 值  'w+', 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之

    (5) $mode 'a', 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建

    (6) $mode 'a+', 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建

    •  举例说明

    (1) 案例1

     

    (2) 第二个案例(覆盖写)

    (3) 第三个案例

     

    •  使用file_put_contents完成任务

     

    推荐大家使用file_put_contents函数.

     

    2.7 删除文件

    •  基本:当我们不需要某个文件,尤其是大文件,需要定位清理.
    •  使用unlink函数.
    •  演示案例

     

    2.8 修改文件

    (1) 修改文件的内容,其实就是前面讲过的写入新内容.

      (2)修改文件名.rename

     

    (3) 细节

    说明: 如果希望正确保存中文名的文件,则需要进行转码操作.

    2.9 操作文件目录( 文件夹)

    •   案例1-创建一级目录

    •  案例2-创建多级目录

    创建 d:/tnweb2/aaa/bbb/ccc/ddd

     

    •  删除目录

     

    2.10 课堂练习题讲评

     

    参考胡同学写的代码.

    2.11 文件编程的应用案例

    •  如何拷贝一张图片

     

    •  代码

    •  经典案例1-遍历某个文件夹,判断该文件夹下的内容分别是目录还是文件?

    先介绍两个重要的函数

    (1) opendir readdir

    opendir : 打开一个目录句柄,可用于之后的 closedir() readdir()  rewinddir() 调用中

    举例说明

    (2) 写一个函数统计某个目录所有文件的大小!(包括子目录

     

    代码

    (3) 删除某个目录(该目录下有文件和文件夹)

     

    (4) 把某个目录的所有文件(包括子目录和其文件)拷贝到其它目录下

     

     

    <?php
        header('content-type:text/html;charset=utf-8');
        //copy 整个目录
    
        //DS就是目录分隔符号
        define('DS', DIRECTORY_SEPARATOR); 
    
    
    
        $path='e:/hspweb';
        //这个 $desc目录可以不存在,也可以存在, 会把 e:/hspweb/ 目录
        //下的所有文件及其子目录拷贝到 指定目录 $desc下 [注:只含e:/hspweb本身这个目录名]
        $dest='d:/mymvc';
    
        copy_r($path,$dest);
        echo 'ok';
    
        //$path 源目录 $dest 目标目录
        function copy_r( $path, $dest )
        {
            if( is_dir($path) )
            {
                //创建目标目录
                @mkdir( $dest );
                
                //scandir 就是获取到$path目录下的所有的文件和目录
                //放入 $objects 中,他是组数
                $objects = scandir($path);
                
    
    
                if( sizeof($objects) > 0 )
                {
                    foreach( $objects as $file )
                    {
                        if( $file == "." || $file == ".." )
                            continue;
                        // go on
                        if( is_dir( $path.DS.$file ) )
                        {
                            copy_r( $path.DS.$file, $dest.DS.$file );
                        }
                        else
                        {
                            copy( $path.DS.$file, $dest.DS.$file );
                        }
                    }
                }
                return true;
            }
            elseif( is_file($path) )
            {
                return copy($path, $dest);
            }
            else
            {
                return false;
            }
        }

     

    •  额外的说明一下 . ..

    :

     

    (1) 不管是windows还是linux/unix操作系统每个目录下都有 . ..

    (2) 一般情况下,操作系统会隐藏这个两个目录

    (3) . .. 我们应该理解成他们不是真实目录, 而是分别代表 . 代表当前这个目录,   ..代表上一级目录.

    (4) 可以联合使用 比如,我们希望找到当前目录的上一级目录  ../   ../../

    2.12 作业练习

    练习题

    1. 遍历显示某个文件夹下所有的文件和目录名 /   
    2. 编写一个程序,要求如下: (这个课上练习!)

    (1) 编写一个Dog

    (2) 创建3Dog对象,然后序列化存放到 d:/dog文件夹下

    (3) 通过遍历d:/dog 可以反序列化所有的Dog对象

  • 相关阅读:
    数据分析业务知识
    Scipy
    python数据结构与算法(1)---时间复杂度
    RNN循环神经网络
    利用卷积神经网络处理cifar图像分类
    CNN卷积神经网络的构建
    卷积神经网络(简单)
    Tensorflow-逻辑斯蒂回归
    Tensorflow
    聚类-衡量指标
  • 原文地址:https://www.cnblogs.com/qianjilou/p/6518615.html
Copyright © 2011-2022 走看看