文件处理
1. 文件系统的相关操作
- 什么是文件操作系统
- 文件操作系统只是PHP知识的一个完整的模块
- 所有文件进行操作都需要文件系统的相关操作函数
- 就是学习操作文件的相关函数
- 与文件相关的函数
(PS: ./
: 当前目录; ../
: 上一级目录 /
: 下一级目录)
-
创建文件:
touch()
(如果文件不存在则会创建文件,如果存在则会更新修改时间)- **复制文件: **
copy('原路径', '目标路径')
- **复制文件: **
-
移动文件 重命名:
rename()
// 重命名 rename('./oldname.txt', './newname.txt'); // 移动 rename('./oldname.txt', '../oldname.txt');
- 删除文件:
unlink()
- 删除文件:
-
获取文件大小:
filesize()
-
判断是否是文件:
is_file()
-
判断文件或目录是否存在 :
file_exists()
-
文件是否可执行
is_executable()
-
文件是否可读
is_readable()
-
文件是否可读写
is_writable()
-
获取文件创建时间
filectime()
-
获取文件修改时间
filemtime()
-
获取文件上次访问的时间
fileatime()
-
打开文件
fopen()
fopen();
// @paramt1 要代开的文件位置
// @parmat2 打开的方式
// 返回值: 资源 resource
// fopen() 将文件资源绑定到一个流上。
- 读取文件
fread()
一个汉字占三字节
fread();
// 他会保留上次读取的位置,下次再从那里读
// 要'打开'文件获得资源流
// @paramt1 读取的资源流
// @paramt2 要读取的字节数
// 返回值 返回读到的内容,如果读到最后返回空字符串
- 测试文件指针是否到了结尾
feof()
fread
与 feof
结合读取文件
// 先打开文件
$file = fopen('./te1xt.txt', 'r');
// 定义一个用来接收结果
$count= '';
// 根据指针判断是否到结尾
while(!feof($file)){
// 拼接字符串
$count .= fread($file, 1);
};
echo $count;
- 读取文件的一行
fgets()
// 先打开文件
$file = fopen('./te1xt.txt', 'r');
// 根据指针判断是否到结尾
while (!feof($file)) {
// 一行一行拼接
// 浏览器中只有<br/>标签可以换行
echo fgets($file) . '<br/>'; // 手动换行用于看出每行
};
fclose($file);
- 关闭文件
fcloce()
关闭是为了节省资源
// @parma1 要关闭的资源
- 打开—读取—关闭 一步到位
file_get_contents(要操作的文件)
返回值 : 将整个文件读入一个字符串
-
**写入文件
fwrite()
**-
需要配合
fopen()
使用 -
当
fopen()
的第二个参数为w
时为覆盖 -
当
fopen()
的第二个参数为a
时为追加 -
@parmat1 要写入的资源
-
@parmat2 要写入的内容
-
返回值 写入的字节数(int类型)
// 打开文件 $file = fopen('./b.txt', 'w'); // w 写入文件的方式 如果文件存不存在,则会自动创建 // 写入文件 fwrite($file, 'Hello Worlod'); // 关闭文件 fclose($file);
-
19. **写入文件一步到位 `file_put_sontents()`**
当第三个可选参数flags为FILE_APPEND
的时候为追加数据而不是覆盖
- 文件的读写锁
flock()
-
// 打开文件 $file = fopen('./b.txt', 'r'); // 读取文件 //文件加锁 $result = flock($file, LOCK_SH); var_dump($result); // 加锁成功返回 true while(!feof($file)) { echo fgets($file) . "/n"; }; //释放 解锁 $Nresult = flock($file, LOCK_UN); var_dump($Nresult); // 解锁成功返回true // 关闭文件 fclose($file);
2. 生成器yield
-
优点
- 生成器会对PHP应用的性能有非常大的影响
- PHP代码运行时节省大量的内存
- 比较适合计算大量的数据
-
生成器的执行过程
-
function demo(int $num) { for($i = 0; $i < $num; $i++) { yield time(); }; }; $result = demo(10); foreach($result as $value) { sleep(1); // 延迟一秒在执行下边的文件 echo $value . "<br/>"; }
-
-
系统函数
sleep()
-
使用生成器读取文件
function readTxt(){ //打开文件 $files = fopen('b.txt', 'r'); //读取文件 while(!feof($files)) { yield fgets($files); } // 关闭文件 fclose($files); } $content = readTxt(); foreach($content as $value) { echo $value."<br/>"; }
原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/244689.html