zoukankan      html  css  js  c++  java
  • 20141227文件夹和文件操作一

    捕获2222

    回顾

    数组:跟字符串转换,运算(+,合并,比较),验证码

    var_dump($结果);exit;

    浏览器与服务器的交互

    浏览器传值:表单(GET和POST)和URL

    服务器接收:$_GET,$_POST,$_REQUEST

    文件上传:数据流(字符流和二进制流)

    条件:服务器允许,浏览器也能上传(表单域和enctype=”multipart/form-data”)

    文件移动:move_uploaded_file(临时文件目录,指定存储路径(带文件名))

    $path = “./uploads/”;

    $path . ‘//’ . $name; //./uploads/programmer.gif

    文件夹操作

    1. 什么是文件操作?

    磁盘上用户能看到的逻辑数据结构(文件夹和文件)

    对文件的增删改查

    2. 为什么要有文件操作?

    当程序需要为某些特定操作进行文件夹或者文件处理的时候,都会应用到文件操作。

    文件上传的时候创建目录;下载文件的时候读取内容;日志分析的时候读取内容

    文件夹操作

    文件夹不属于php本身,php要去操作文件夹,通过资源的形式进行操作。

    1. 建立连接。获取文件资源。

    opendir(路径):打开一个路径资源(将路径内部的所有数据读入到内存)

    wps39FC.tmp

    2. 获取文件夹资源里面的文件:文件名

    readdir(路径资源):从文件夹资源中读取当前资源指针所指向的文件的名字,指针会向下移动一位

    wps3A1C.tmp

    3. 释放资源

    closedir(资源):释放对应的文件资源

    wps3A3C.tmp

    遍历文件夹

    将文件夹资源内部的所有文件给遍历出来。利用readdir能够读取元素,并且下移指针的过程,配合如果指针移出资源,返回的是false来进行循环遍历。

    wps3A4D.tmp

    结果集指针回位

    rewinddir(资源)

    wps3A4E.tmp

    函数遍历文件夹

    scandir(路径):读取一个路径内部的所有文件名,返回一个数组,数组的每一个元素都是文件名。

    wps3A5F.tmp

    文件夹操作相关函数

    file_exists:判断一个文件是否存在(文件是广义:路径和文件)

    wps3A6F.tmp

    is_dir:判断一个指定路径是否存在(文件夹)

    wps3A70.tmp

    is_file:判断一个指定路径是否是文件(文件)

    wps3A71.tmp

    mkdir:创建一个路径,如果路径存在就会报错

    wps3A82.tmp

    rmdir:移除文件夹

    wps3A83.tmp

    注意:文件夹的删除只能删除空文件夹,不能删除有文件的文件夹(.和..除外)

    getcwd:获取当前工作路径

    wps3A84.tmp

    chdir:改变当前工作路径

    wps3A94.tmp

    作业:将文件上传做成按月日时分,分类管理

    思路:判断当前年月日时分秒这样的路径是否存在,不存在创建,存在将将文件放进去

    遍历所有文件及其子目录

    遍历一个文件夹内的所有文件的同时,如果其文件是目录,那么也需要遍历出来。

    1. 定义一个函数:获取当前指定目录下面的所有文件

    2. 先取出当前文件夹内的所有文件

    3. 将取出的文件数组遍历输出

    wps3A95.tmp

    4. 修改判断逻辑:所有的文件的判断,都必须配合路径。

    wps3AA6.tmp

    5. 如果文件结果是文件夹:说明有子文件,重新遍历获取里面的所有内容

    wps3AA7.tmp

    以上解决方案:只能变量两层文件夹,如果有多层就没有办法全部遍历处理。

    规律

    要解决的问题:获取一个文件夹内的所有文件夹和文件

    子问题:获取一个文件夹内的所有的文件夹和文件

    wps3AA8.tmp

    内存分析

    在函数内部调用函数自己,实现文件夹及其字目录遍历

    wps3AB9.tmp

    递归

    1. 什么是递归?

    递归就是函数在自己内部调用函数。

    2. 递归两个点

    a) 递归点:如果在函数内部去解决一个问题的时候,发现把问题减小之后,子问题与父问题(函数要解决的问题)一致,只是规模变小,这个时候就应该采用父问题的解决方案去解决子问题,递归点。

    文件夹遍历的递归点:遍历到子文件夹的时候,子文件夹与外层的符文件件本质上没有区别,递归点。

    b) 递归出口:当递归发生后(函数内部调用了函数自己之后),函数不应该无限的调用自己,应该在某个点结束自己。结束点称之为递归出口

    文件夹遍历的递归出口:读到的文件是文件不是路径,递归出口是一个文件夹内没有子文件夹或者子文件夹都被遍历完。

    作业:

    1. 实现递归遍历文件夹及其子目录:输出

    2. 递归遍历文件夹及其子目录:通过数组保存,保存的数据能够被区分出是文件还是文件夹,还能确定层级(无限级分类):静态变量,二维数组(文件名,层级,是否是目录)

  • 相关阅读:
    DAY10-MYSQL表操作
    DAY10-MYSQL完整性约束
    DAY10-MYSQL数据类型
    DAY10-MYSQL存储引擎
    DAY10-MYSQL库操作
    017.2 基本数据类型对象包装类
    017.1 stringBuffer
    016.2 String
    16.1 eclipse设置
    015.5线程常见用法(面试题)
  • 原文地址:https://www.cnblogs.com/lifushan/p/6430872.html
Copyright © 2011-2022 走看看