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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2,file: 把整个文件读入一个数组中
file(string $filename, int $flags = 0, ?resource $context = null): array|false
- 数组的每个元素对应于文件中的一行
- 可以读取本地的文件
- 也可以用来读取一个网络文件
\n"; }
- 1
- 2
- 3
- 4
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 . "\n"; } fclose($fp); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
3.2 fread — 从文件指针中读取固定长度(可安全用于二进制文件)
$fp = fopen("test.txt", "r"); if ($fp) { $content = ""; while (!feof($fp)) { $content .= fread($fp, 1024); } #$contents = fread($handle, filesize($filename)); echo $content; fclose($fp); }fread(resource $stream, int $length): string|false
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
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
- 2
- 3
- 4
二、文件写入
1,file_put_contents: 将数据写入文件
$content = "Hello, world!"; // 要写入文件的内容 $file = "test.txt"; // 文件路径 file_put_contents($file, $content);file_put_contents(
string $filename,
mixed $data,
int $flags = 0,
?resource $context = null
): int|false
- 1
- 2
- 3
- 4
2,fwrite: 写入文件(可安全用于二进制文件)
$content = "这是要写入文件的内容"; $file = fopen("test.txt", "w"); // 打开文件写入模式 if ($file) { fwrite($file, $content); // 将内容写入文件 fclose($file); // 关闭文件 }fwrite(resource $stream, string $data, ?int $length = null): int|false
- 1
- 2
- 3
- 4
- 5
- 6
3,SplFileObject 类
三、文件复制、删除、重命名
1,copy: 拷贝文件
$file = 'test.txt'; $newFile = 'test2.txt'; if (!copy($file, $newFile)) { echo "failed to copy $file...\n"; }copy(string $from, string $to, ?resource $context = null): bool
- 1
- 2
- 3
- 4
- 5
- 6
2,unlink: 删除文件
$fileName = 'test2.txt'; if (file_exists($fileName)) { if (unlink($fileName)) { echo '删除成功'; } }unlink(string $filename, ?resource $context = null): bool
- 1
- 2
- 3
- 4
- 5
- 6
3,rename: 重命名文件
rename(string $from, string $to, ?resource $context = null): bool
- 可以在不同目录间移动
- 如果重命名文件时 to 已经存在,将会覆盖掉它
- 如果重命名文件夹时 to 已经存在,本函数将导致一个警告
- 1
- 2
- 3
- 4
- 5
- 6
- 7
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |