php文件操作

一、文件读取的5种方法

1,file_get_contents: 将整个文件读入一个字符串

file_get_contents(
string $filename,
bool $use_include_path = false,
?resource $context = null,
int $offset = 0,
?int $length = null
): string|false

  • 可以读取本地的文件
  • 也可以用来打开一个网络地址实现简单的网页抓取
  • 可以模拟post请求(stream_context_create)
$fileName = 'test.txt';
if (file_exists($fileName)) {$str = file_get_contents($fileName);echo $str;
} else {print_r("文件不存在");
}
2,file: 把整个文件读入一个数组中

file(string $filename, int $flags = 0, ?resource $context = null): array|false

  • 数组的每个元素对应于文件中的一行
  • 可以读取本地的文件
  • 也可以用来读取一个网络文件
$lines = file('test.txt'); 
foreach ($lines as $line_num => $line) {echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
3,file_open、file_gets、file_read、fclose: 从文件指针资源读取

3.1 fgets — 从文件指针中读取一行

fgets(resource $stream, ?int $length = null): string|false

从文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

$fp = fopen("test.txt", "r");
if ($fp) {while (!feof($fp)) {$line = fgets($fp);echo $line . "<br />\n";}fclose($fp);
}

3.2 fread — 从文件指针中读取固定长度(可安全用于二进制文件)

fread(resource $stream, int $length): string|false

$fp = fopen("test.txt", "r");
if ($fp) {$content = "";while (!feof($fp)) {$content .= fread($fp, 1024);}#$contents = fread($handle, filesize($filename));echo $content;fclose($fp);
}
4,SplFileObject 类

https://www.php.net/manual/zh/class.splfileobject.php

5,调用linux命令

处理超大文件,比如日志文件时,可以用fseek函数定位,也可以调用linux命令处理

$file = 'access.log';
$file = escapeshellarg($file); // 对命令行参数进行安全转义
$line = `tail -n 1 $file`;
echo $line;

二、文件写入

1,file_put_contents: 将数据写入文件

file_put_contents(
string $filename,
mixed $data,
int $flags = 0,
?resource $context = null
): int|false

$content = "Hello, world!"; // 要写入文件的内容
$file = "test.txt"; // 文件路径file_put_contents($file, $content);
2,fwrite: 写入文件(可安全用于二进制文件)

fwrite(resource $stream, string $data, ?int $length = null): int|false

$content = "这是要写入文件的内容";
$file = fopen("test.txt", "w"); // 打开文件写入模式
if ($file) {fwrite($file, $content); // 将内容写入文件fclose($file); // 关闭文件
}
3,SplFileObject 类

三、文件复制、删除、重命名

1,copy: 拷贝文件

copy(string $from, string $to, ?resource $context = null): bool

$file = 'test.txt';
$newFile = 'test2.txt';if (!copy($file, $newFile)) {echo "failed to copy $file...\n";
}
2,unlink: 删除文件

unlink(string $filename, ?resource $context = null): bool

$fileName = 'test2.txt';
if (file_exists($fileName)) {if (unlink($fileName)) {echo '删除成功';}
}
3,rename: 重命名文件

rename(string $from, string $to, ?resource $context = null): bool

  • 可以在不同目录间移动
  • 如果重命名文件时 to 已经存在,将会覆盖掉它
  • 如果重命名文件夹时 to 已经存在,本函数将导致一个警告
$fileName = 'test.txt';
$rename = 'test_new.txt';
if (file_exists($fileName)) {if (rename($fileName, $rename )) {echo '重命名成功';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python语言元素之变量

程序是指令的集合&#xff0c;写程序就是用指令控制计算机做我们想让它做的事情。那么&#xff0c;为什么要用Python语言来写程序呢&#xff1f;因为Python语言简单优雅&#xff0c;相比C、C、Java这样的编程语言&#xff0c;Python对初学者更加友好。 一、一些计算机常识 在…

【Apache的安装与目录结构】讲解

Apache的安装与目录结构 0. 前言1. 安装Apache1.1 在Ubuntu/Debian上安装Apache1.2 在CentOS/Red Hat/Fedora上安装Apache1.3 在Windows上安装Apache1.4 在Mac OS X上安装Apache 2. Apache目录结构 0. 前言 Apache HTTP Server&#xff0c;简称Apache&#xff0c;是一个开源的…

储能系统--户用储能欧洲市场(三)

五、户用市场地域分析 2022年以来&#xff0c;全球能源供需格局进入调整阶段&#xff0c;越来越多的国家将储能列为加速其清洁能源转型的必选项。根据中关村储能产业技术联盟 &#xff08;CNESA&#xff09;数据&#xff0c;2022年全球新增投运电力储能项目装机规模30.7GW&…

删除 PostgresSql 数据库 报错:有 N 个其它会话正在使用数据库 的解决方案

说明此时有两个客户端在连接此数据库&#xff0c;此时不能删除数据库。 如果确定要强制删除此数据库&#xff0c;那么执行如下命令&#xff1a; SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname‘VolteAna3G’ AND pid<>pg_ba…

吴恩达机器学习笔记十六 如何debug一个学习算法 模型评估 模型选择和训练 交叉验证测试集

如果算法预测出的结果不太好&#xff0c;可以考虑以下几个方面&#xff1a; 获得更多的训练样本 采用更少的特征 尝试获取更多的特征 增加多项式特征 增大或减小 λ 模型评估(evaluate model) 例如房价预测&#xff0c;用五个数据训练出的模型能很好的拟合这几个数据&am…

Java观察者模式源码剖析及使用场景

观察者模式 一、原理及通俗理解二、股票项目中使用三、Spring框架中使用观察者模式四、总结优缺点以及使用经验一、优点二、缺点三、使用经验 一、原理及通俗理解 观察者模式是一种行为设计模式&#xff0c;它定义了对象之间的一对多依赖关系&#xff0c;使得一个对象的状态发…

7、Copmose自定义颜色和主题切换

Copmose自定义颜色和主题切换 一起颜色的设置的都是在res/values/colors里面去做颜色&#xff0c; 但是当使用compose的时候&#xff0c;抛弃了使用了ui.theme底下的Color.kt和Theme.kt 但是默认使用的是MaterialTheme主题&#xff0c;里面的颜色字段不能定义&#xff0c;因此…

重写单链表的快速排序

2018年第一次试着写单链表的快速排序。所使用的方法虽然代码非常简洁&#xff0c;只有20行&#xff0c;但可惜并不是纯正的快速排序&#xff0c;而且使用的是数据交换也不是节点链接改变&#xff0c;造成效率也有点问题。后来又于2022年重写单链表的快速排序。这一次想出了一种…

贪吃蛇(C语言实现)

贪食蛇&#xff08;也叫贪吃蛇&#xff09;是一款经典的小游戏。 —————————————————————— 本博客实现使用C语言在Windows环境的控制台中模拟实现贪吃蛇小游戏。 实行的基本功能&#xff1a; • 贪吃蛇地图的绘制 • 蛇吃食物的功能&#xff08;上、…

详解DNS服务

华子目录 概述产生原因作用连接方式 因特网的域名结构拓扑分类域名服务器类型划分 DNS域名解析过程分类解析图图过程分析注意 搭建DNS域名解析服务器概述安装软件bind服务中的三个关键文件 配置文件分析主配置文件共4部分组成区域配置文件作用区域配置文件示例分析正向解析反向…

动态规划 Leetcode 70 爬楼梯

爬楼梯 Leetcode 70 学习记录自代码随想录 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到…

SpringCloud 微服务架构编码构建

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第一篇&#xff0c;即不使用 SpringCloud 组件进行模块之间的调用&#xff0c;后续会有很多的文章循序渐…

️ IP代理实操指南:如何在爬虫项目中避免封禁和限制 ️‍♂️

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

moreutils yum安装

在基于RPM的Linux发行版中&#xff0c;如CentOS、Red Hat Enterprise Linux或Fedora&#xff0c;你可以使用yum&#xff08;在较旧版本中&#xff09;或dnf&#xff08;在较新版本中&#xff09;来安装moreutils软件包。不过需要注意的是&#xff0c;默认的官方仓库可能并未包含…

企业战略管理 找准定位 方向 使命 边界 要干什么事 要做多大的生意 资源配置投入

AI突破千行百业&#xff0c;也难打破护城河 作为每个企业或个人的立命生存之本&#xff0c;有的企业在某个领域长期努力筑起了高高的护城河。 战略是什么&#xff1f;用处&#xff0c;具体内容 企业战略是指企业为了实现长期目标&#xff0c;制定的总体规划和长远发展方向。…

通过Forms+Automate+Lists+审批,实现用车申请流程

因为Sham公司目前用的用车申请流程是使用的K2系统&#xff0c;用户申请后&#xff0c;我们还需要单独另行输入Excel来汇总申请记录&#xff0c;当然K2也能导出&#xff0c;但是需要每次导出也是很麻烦的&#xff0c;而且不灵活。 刚好最近发现Forms与Automate能联通&#xff0…

华容道问题求解_详细设计(六)之简单互动和动画

简单互动 为了增加趣味性&#xff0c;增加了简单的互动功能&#xff0c;即实现了一个简单的华容道游戏。在HrdGame中有两个鼠标操作的函数&#xff0c;在传入的控件中调用这个两个函数就可以了。 代码如下&#xff1a; Click事件 private void pnl_GameBoard_MouseClick(objec…

华为OD面试分享9(2024年)

1.3 告知简历筛选通过 1.8 资格面,就简单问了一下gap原因,离职原因,期望薪水,还问了一下技术栈 这期间本来在准备机试,结果机试我上半年考了一次,但是后面没去od,hr告知成绩好像还有效就没有重新机试。具体题目忘了。 1.17 技术一面 上来先自我介绍,然后问了一下上…

Java服务器-Disruptor使用注意

最近看了一下部署后台的服务器状况&#xff0c;发现我的一个Java程序其占用的CPU时长超过100%&#xff0c;排查后发现竟是Disruptor引起的&#xff0c;让我们来看看究竟为什么Disruptor会有这样的表现。 发现占用CPU时间超过100%的进程 首先是在服务器上用top命令查看服务器状…

C语言 寻找单身狗(2个

此题知识&#xff1a;a^0a;a^a0;传值调用和传址调用要分清作用 题目&#xff1a;在 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;1&#xff0c;3&#xff0c;4&#xff0c;5这几个数字中找出只出现一次的数字并打印在屏幕上 解题思路&…