微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP文件操作

文件操作:对文件的增删改查。(文件夹也是文件

为什么要使用文件操作?
1.有一些数据:不经常被修改,但是又经常被使用,数据量小,使用文件来保存数据(配置文件,xml文件,session文件
2.系统日志文件:把一些系统错误,保存到日志文件管理员或者程序员去分析。


文件目录的操作

文件操作必须先找到对应的路径。

文件操作步骤
1.得到文件路径对应的资源
opendir:打开一个目录,需要一个路径参数,返回一个资源

这里写图片描述

2.需要从资源里获取对应的数据
readdir:读取,从资源里读取一个对应文件,当前文件指针所指向的文件,将文件指针下移一位。返回当前文件文件名字或者FALSE。可以显示的使用资源参数,也可以不提供,因为系统会向上自动寻找文件路径资源。

这里写图片描述


目录相关函数

rewinddir:重置目录资源的指针,回到第一个文件(.文件

这里写图片描述

closedir:释放目录资源

这里写图片描述

scandir:浏览器目录,把所有的文件都获得,并存放到一个数组返回

这里写图片描述


遍历目录

1.获得路径资源
2.逐个的读取文件信息
3.关闭资源

这里写图片描述


目录操作原理

opendir所做的事情
1.找到对应的目录
2.将目录中所有文件全部读入到内存(包含子文件夹下的所有文件
3.将目录指针指向第一个文件

readdir所做的事情
1.读取当前指针所指向的文件文件
2.将目录指针向下移动一位

这里写图片描述


文件相关函数

file_exists:判断文件是否存在。存在返回TRUE,不存在返回false

这里写图片描述

is_dir:判断给定的路径是否是一个路径,如果是路径返回TRUE,否则返回false

这里写图片描述

is_file:判断给定的路径是否是一个文件,如果是文件返回TRUE,否则返货false

这里写图片描述

mkdir创建文件夹,不能创建同名文件夹(Linux下:必须保证当前文件夹有PHP所在组有权限进行写操作)

这里写图片描述

rmdir删除文件

这里写图片描述

getcwd获取当前操作目录

这里写图片描述

chdir:改变当前操作目录,代表进入到目标目录

这里写图片描述

这里写图片描述


遍历所有文件夹及子目录

1.得到一个路径
2.获得路径资源
3.获取指针所指向文件
4.判断当前文件是否是一个路径
a)如果是路径:进入到子目录(改变工作路径)
b)如果是文件:直接输出
5.关闭资源


递归

函数内部调用函数本身。
函数用来解决某一类问题,在函数的内部又碰到了与之前碰到的一样的问题,接下来调用函数本身来解决该子问题。重点内容

需求:32个球,外形完全一样,有一个球比其他31个都轻。有一个天平。
问题:使用几次可以找出这个球?
1.32个分成两半,其中有一半比另外一半轻。
2.16个分成两半,其中有一半比另外一半轻。
3.。。。
4.2个分成两半,其中有一个比另外一个轻。 ——–》找到目标

$num = 32;
while($num>= 2){
$num = $num /2;
}
echo $num;

语法:
定义一个函数
function iterate(){
   //判断
   if(条件与父问题一致){
      //调用函数本身
   iterate();
   }
  }

//调用函数
iterate();

递归调用
递归点:当前碰到的子问题与父问题一致
递归出口:已经不存在递归点,而应该结束的地方

这里写图片描述



递归原理

这里写图片描述


文件操作

文件内容的增删改查。

PHP4以后,PHP提供了非常简单的函数来操作文件内容
file_get_contents():获取文件的全部内容

这里写图片描述

file_put_contents():向某个文件写入内容

这里写图片描述

注意:
1.file_put_contents能够将内容写入到文件
2.如果文件不存在,则会新建一个对应的文件
3.file_put_contents认的会覆盖原来文件内容进行写入

这里写图片描述

file_put_contents第三个参数用来设定是否覆盖原来的文件内容
FILE_USE_INCLUDE_PATH:表示会覆盖原来的数据
FILE_APPEND:在后面追加数据

这里写图片描述

file_get_contents不但能读取本地文件,还可以通过http协议去访问互联网上的文件

这里写图片描述

file:把整个文件读入一个数组中,返回一个数组(数组的每一个元素都是文件中的一行数据)

这里写图片描述

PHP4以前的文件操作方式。
fopen:打开一个文件,返回一个资源
Mode[r,r+,w,w+,a,a+]

这里写图片描述

这里写图片描述

fgetc:c代表charcater,一次获取一个字符,指针下移一位

这里写图片描述

fgets:s代表string,一次获取一行(要么获取指定长度,要么获取一行)

这里写图片描述

fread:读取指定长度是数据

这里写图片描述

fputs:就是fwrite的替身
fwrite:往文件里写入内容
内容的时候,会覆盖原来位置的内容内容会被重写

这里写图片描述

fclose关闭文件资源

这里写图片描述

fseek:重置指针的位置,需要用户自己指定位置

这里写图片描述

fopen中w与w+的区别测试

这里写图片描述


文件操作相关函数

copy:拷贝,会保存原文件
unlink删除文件

这里写图片描述

rename重命名文件

这里写图片描述

filemtime:m代表modify,修改的意思,获取文件最后被修改的时间

这里写图片描述

filesize获取文件的长度

这里写图片描述

fileperms获取文件的权限(主要针对Linux),返回是一个八进制结果

这里写图片描述


文件下载

文件下载分为两种方式
html的a标签实现:

这里写图片描述

a标签实现下载的缺点:
1.导致服务器会自动解析相关文件(如果服务器能够识别)
2.路径是文件在服务器存在的真实路径,所以导致不安全

PHP实现下载:
header(“Content-type: application/octet-stream”):当前PHP输出给浏览器的数据是流式文件,浏览器不要解析(其实就是下载的意思)
header(“Content-disposition: attachment; filename=filename”):对文件进行伪装,文件变成一个普通的附件并进行重命名

PHP下载原理
1.通过header设置告诉浏览器,接收到内容之后不要解析,应该当做附件处理
2.输出对应的数据即可。

这里写图片描述


函数调用计数器

计算出函数调用了多少次。

1.传入参数,参数使用引用传值:对外部变量的引用
2.$GLOBALS和global都可以

解决的问题:函数内部定义变量能够在其他的被调用函数(同一个函数)中能够认可

静态变量:在函数中定义,但是在函数再次调用时,不会重新定义,而是使用第一次函数定义的变量。

静态变量:在函数结束之后不会被立即释放
语法:static $变量名 = 值;

这里写图片描述

注意:
1.一个静态变量只会被定义一次
2.静态变量不是存放在局部变量内存中,而是存放在静态变量区(静态变量区不允许定义重复的变量)

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐