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.静态变量不是存放在局部变量内存中,而是存放在静态变量区(静态变量区不允许定义重复的变量)

这里写图片描述

原文地址:https://blog.csdn.net/lwzhang1101

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

相关推荐


文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Online Tours & Travels Management System pay.php sql injectionLine 16 of pay.php invokes a SQL query built using unvalidated input. This call could allow an attacker to modify the statement’s meaning or to execute arbitrary SQL commands.SQL
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在windwos系统搭建typecho博客+cpolar内网穿透工具将博客发布到公共网络环境,实现远程也可以访问和操作。_windows搭建typecho
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代语法,让php更加的优雅的与html生活在一起 -->请放心, 最终生成的,或者说用户最终看到的,仍然是一个html文档, php代码中的内容不会被泄漏的。-- 将php与html代码混编的时候,大括号很容易造成配对错误,最好杜绝它 -->php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析。-- 所以php的流程控制语句, 都提供了替代语法,用冒号代替大括号 -->php echo '百变鹏仔'?_利用php将静态页面修改为动态页面
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔记博文内容涉及 Linux network namespace 认知以及彼此通信Demo,实际中的应用理解不足小伙伴帮忙指正不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树。_linux network namespace 多端通信 模式认知
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了一个逻辑二层(L2)网络,该网络封装在跨 Kubernetes 集群节点的现有三层(L3)网络拓扑上。使用此模型,可以为容器提供一个隔离的 L2 网络,而无需分发路由。封装网络带来了少量的处理开销以及由于覆盖封装生成 IP header 造成的 IP 包大小增加。封装信息由 Kubernetes worker 之间的 UDP 端口分发,交换如何访问 MAC 地址的网络控制平面信息。此类网络模型中常用的封装是 VXLAN、Internet 协议安全性 (IPSec) 和 IP-in-IP。_k8s网络组件对比
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。
文章浏览阅读1.3w次,点赞3次,收藏7次。尽管您可以通过 ping 命令解析出网站的 IP 地址,但是可能在浏览器中访问时仍然遇到问题,这可能是因为浏览器使用的 DNS 解析结果不同于 ping 命令使用的解析结果。可能是因为您的网络或设备上设置了防火墙,阻止了对特定网站的访问。有些国家或组织可能会对特定的域名进行屏蔽,从而阻止访问相关网站。如果您的网络使用代理服务器进行访问控制,可能会由于代理服务器的配置问题导致无法访问某些网站。即使您的网络和设备一切正常,目标网站本身可能也存在问题,例如服务器故障、维护或过载,导致无法访问。_能ping通打不开网页
文章浏览阅读839次,点赞22次,收藏19次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读2.1k次,点赞31次,收藏22次。基于微信小程序奶茶点餐外卖系统设计与实现(PHP后台+Mysql)可行性分析毕设源代码毕业设计,数据安全和系统稳定性以及团队能力和资源配备方面都具备较好的条件。因此,该项目的可行性较高。:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;微信小程序作为一种快捷、方便的移动应用形式,成为很多用户点餐外卖的首选。项目的界面和功能都可以定制,包安装运行!项目配有对应开发文档、开题报告、任务书、PPT、论文模版等。
文章浏览阅读1.8k次,点赞52次,收藏38次。本文主要通过对系统的前台系统和后台管理系统进行了功能性需求分析,对系统的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据系统的功能设计确定了数据库结构,实现完整的代码编写。Lucky+Baby母婴用品网站使用 Dreamweaver、HBuilder代码编辑器、Apache服务器等开发工具,完成了系统的主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、商品搜索功能、生成订单和查看我的订单功能、在线付款功能功能的实现过程。
文章浏览阅读1.5k次,点赞45次,收藏40次。本设计主要实现集人性化、高效率、便捷等优点于一身的人事信息管理系统,完成首页、系统用户、通知公告、部门信息、员工薪资、考勤签到、员工请假、招聘信息、应聘信息等功能模块。
文章浏览阅读1k次。该错误通常出现在数据库读取结果集数据时,比如当我们写好SQL语句从数据库读取数据时,本身应该返回结果集,再给结果集中读取数据。解决思路:这种错误一般是因为echo后面输出了一个数组导致的,或者是数组作为字符串进行拼接运算时导致的。该错误直译为:警告:mysqli_fetch_assoc函数期望参数1是mysqli的结果集,但是给了一个布尔值。这种错误是PHP解析器在解析时遇到了语法错误,直译为:解析错误:语法错误,意料之外的...该错误直译为:提示:未定义的索引:username。_array to string conversion in
文章浏览阅读2.7w次。解决http请求报错context deadline exceeded (Client.Timeout exceeded while awaiting headers)_context deadline exceeded (client.timeout exceeded while awaiting headers)
文章浏览阅读1.3k次,点赞26次,收藏24次。复杂网络是一种由大量相互连接的元素(节点或顶点)组成的网络结构,这些连接通常是非常复杂和动态的。这些网络可以在各种领域中发现,包括社交网络、生物学系统、信息技术和交通系统等。_代理建模
文章浏览阅读2.6k次,点赞76次,收藏71次。epoll详解,事件模型,ET/LT模式,并通过三个示例进行代码实现。
文章浏览阅读3.3k次。罗拉ROLA-IP是一家来自纽约的代理IP提供商,由李嘉诚先生投资建设,韩国人工智能、自动驾驶、虚拟现实方面的领军企业World IT Show投资入股,由美国纽约大学IT管理教授团队研究开发,进入中国市场6年多,全世界设有多个分子公司。接下来,我们要检查代理和防火墙的设置,因为在绝大多数情况下,它们是导致这个错误的原因,尤其是当用户使用免费代理时。对网站的访问受阻实际上是一个非常常见的错误,它既可能是由于物理原因(硬件问题)造成的,也可能是由于软件错误引起的。检查代理设置,并确保其正确配置。_无法访问此网站,检查代理服务器和防火墙
文章浏览阅读1.1k次,点赞14次,收藏20次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。_php洗车服务预约管理系统php源码
文章浏览阅读1.1k次。桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。
文章浏览阅读936次,点赞22次,收藏17次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读822次,点赞15次,收藏14次。在整个设计过程中,要确定可能的具体解决方案,以实现每一个小的最终目标,对于每一个小目标,我们首先必须了解一些相关的需求分析信息。除了以上作品下面是2023-2024年最新100套计算机专业原创的毕业设计源码+数据库,是近期作品,如果你的题目刚好在下面可以文末领取java源码参考。springboot基于springboot的在线考试系统。springboot基于springboot的商城购物系统。springboot基于微信小程序的智慧校园设计与实现。springboot基于用户的协同过滤算法的话题推荐。