zoukankan      html  css  js  c++  java
  • PHP中的文件操作

     

    文件系统的概述

    任何类型的变量在运行的时候都是将其加载到内存里面。但是内存有一个特点:CPU读取内存的速度很快,但是一旦断电,内存里面的数据就会消失。如果要持久的保存数据,有两种方法:将数据存储到数据库或者存储到文件里面。

    文件的处理一般包括:创建,编辑,复制,粘贴,删除,上传和下载。

    PHP里面对文件的操作是基于UNIX系统的。所以在PHP里面文件相关的操作函数有很多是类似于UNIX Shell命令。Windows操作系统里面没有提供那么多像UNIX系统提供的文件操作函数,但是大部分函数功能是兼容。

    文件类型

    PHP里面,文档类型有7(基于UNIX系统),如果是基于Windows系统,文件类型只有3种。

    UNIX系统下面文件类型有7种:fifochardirblocklinkfile unknown

    如下表:

    文件类型

    描述

    fifo

    命名管道,用于将信息的一个进程传递到另一个进程

    char

    字符设备

    Dir

    目录类型

    Block

    块设备类型

    Link

    符号链接,是指向文件的指针

    File

    普通文件类型

    unknown

    未知类型

    Windows系统下面文件类型只有3种:dirfileunknown

    PHP里面有一个函数可以查看文件的类型filetype()

    该文件位于C盘下面

    结果:

    接下来来一个file类型

    该文件也位于C盘下面

    结果:

    这里补充一个file_exists()函数:判断文件是否存在

    除此之外,还有一组判断文件是否为某一个类型的函数

    is_file()  is_dir()

    文件属性

    在操作文件的时候,我们往往需要获取文件的相关属性,例如:文件的大小,文件的创建时间,文件的访问时间

    如下表:下面的函数接收的参数都是文件所在的路径

    函数

    功能

    返回值

    file_exists

    判断文件是否存在

    返回true或者false

    filesize()

    获取文件大小

    返回字节数

    filectime()

    获取文件的创建时间

    返回一个时间戳

    filemtime()

    获取文件的修改时间

    返回一个时间戳

    fileatime()

    获取文件上次访问的时间

    返回一个时间戳

    is_readable()

    判断文件是否可读

    返回true或者false

    is_writeable()

    判断文件是否可写

    返回true或者false

    is_executable()

    判断文件是否可以执行

    返回true或者false

    is_file()

    判断是否为文件

    返回true或者false

    is_dir()

    判断是否为目录

    返回true或者false

    stat

    获取文件大部分信息

    返回一个装有文件大部分信息的关联数组

    接下来我们把上面的函数全部走一遍:

    文件存在于C盘下:

    结果:

    stat()函数:返回的是一个关联数组,数组里面装有关于文件的信息

    效果:

    具体数组元素的含义,我们可以参照手册:

    这些属性在UNIX上面用的比较多,在Windows上面,没有uidgidblksizeblocks这些属性,所以在windows下默认值是0或者-1

    目录的相关操作

    目录的路径

    路径可以分为绝对路径和相对路径

    绝对路径:所谓绝对路径,就是指从根目录下面一层一层往下找。最后找到需要找的目录或者文件

    相对路径:从当前的目录开始找,进入某一个目录,最终找到需要的文件或者目录

    绝对路径和相对路径示例:

    UNIX系统下面,支持的路径分隔符为/   但是在Windows系统下面的路径分隔符为,但是需要使用转义字符进行转移,如下:

    但是Windows系统支持使用/作为路径分隔符,为了兼容和更好的移植,一般就使用/作为路径分隔符

    除了使用/作为路径分隔符以外,还有一个常量也可以作为路径分隔符,DIRECTORY_SEPARATOR

    通常在做开发的时候,将目录的各个部分分隔开是很有用的。例如:取得文件的扩展名,取得文件所在的目录。basename()dirname()pathinfo()

    basename():返回路径中的文件名部分。该函数接收两个参数,第一个是路径,第二个是文件的类型,如果传入第二个参数,则不显示文件的扩展名。

    dirname():和basename()函数的作用刚好相反,获取文件的目录部分

    pthinfo():返回一个关联数组,数组里面装有传入路径的目录名,传入路径的文件名,文件扩展名,和去掉扩展名的文件

    遍历目录

    对服务器下面的某一个目录进行浏览,通常称之为遍历目录。可能需要用到的函数如下:

    opendir():打开指定的目录

    closedir():关闭指定的目录

    readdir():读取指定目录,返回当前的目录并且指针位置移动到下一位,当指针移动到末尾无法再移动的时候,返回false

    rewinddir():倒回目录,将目录指针移动到目录开始的位置

    遍历目录示例:

    该目录位于C盘下面的test目录

    效果:

    通过观察我们发现:多了两个目录,分别是...  

    (重要)每一个目录下面默认都存在这两个目录,.代表当前目录,..代表上一级目录,所以我们在对目录进行操作的时候,一定要注意排除这两个多余目录

    还有一个glob()函数:作用也是用来遍历目录,返回一个包含检索结果的数组

    效果:

    示例2:检索该目录下所有的txt文档

    统计目录大小

    PHP里面有两个函数:disk_free_space()disk_total_space()

    disk_free_space():统计磁盘的剩余空间

    disk_total_space():统计磁盘的总大小

    统计出来的磁盘大小的单位为字节

    但是,如果要符合平时查看磁盘大小的习惯的话,就需要将字节转换为对应的大小

    转换代码如下:

    PHP里面,没有统计目录大小的函数,所以这个函数需要我们自己写

    这里我们自己写一个函数,假设函数名为dirSize,该函数应当接收的参数为目录的路径

    统计目录大小函数代码如下:

    建立和删除目录

    建立目录非常简单,PHP给我们提供了建立目录的函数mkdir(),该函数接收一个参数:想要建立目录的路径

    效果:

    删除目录

    删除目录PHP系统也给我们提供了相应的函数rmdir()。接收一个参数,参数为要删除目录的路径

    如下:

    但是rmdir()函数只能删除空目录,如果目录非空,那么无法直接删除

    通过unlink()函数可以删除某一个文件

    所以如果要删除不为空的目录,又需要用到递归方法去遍历每一个目录,删除目录下面的文件,代码如下:

    复制目录

    PHP系统也是为我们提供了一个拷贝文件的函数:copy()函数

    该函数接收两个参数(源文件的路径,目标文件路径)

    如果目标文件已经存在,则会被覆盖掉

    效果:

    但是PHP里面并没有提供目录的复制函数,所以需要我们自己书写目录复制的函数

    复制目录示例:参见dirCopy.php文件

    移动目录

    PHP里面提供了一个rename()函数,可以对目录和文件进行移动,并且移动的时候还可以重命名,非常好用,示例:

    效果:

  • 相关阅读:
    Unity 执行命令行
    c#中的特性,以及一些思考
    miniui禁用combobox
    给textarea赋值并可编辑
    js不允许input输入空格
    使用OPENROWSET函数连接并访问远程数据库数据
    miniui 换页符点击无效
    AJAX基本结构及使用
    SQL Server查询数据库中包含某个值的表和字段
    js实现input输入框只能输入数字的功能
  • 原文地址:https://www.cnblogs.com/jiafangfang/p/7441419.html
Copyright © 2011-2022 走看看