一文带你掌握PHP中常见的文件操作

 更新时间:2024年03月12日 11:21:23   作者:零下两度  
这篇文章主要为大家详细介绍了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 '重命名成功';
   }
}

到此这篇关于一文带你掌握PHP中常见的文件操作的文章就介绍到这了,更多相关PHP文件操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • php之static静态属性与静态方法实例分析

    php之static静态属性与静态方法实例分析

    这篇文章主要介绍了php之static静态属性与静态方法,以实例形式较为详细的分析了php静态属性与静态方法的概念与相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 解析link_mysql的php版

    解析link_mysql的php版

    本篇文章是对link_mysql的php版的实现进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php有效防止图片盗用、盗链的两种方法

    php有效防止图片盗用、盗链的两种方法

    这篇文章主要为大家详细介绍了php有效防止图片盗用、盗链的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • PHP结构型模式之享元模式详解

    PHP结构型模式之享元模式详解

    这篇文章主要介绍了PHP结构型模式之享元模式,享元模式是一种结构型模式,它通过共享对象来减少系统中的对象数量,从而降低了内存的使用和系统的复杂度
    2023-04-04
  • 部署PHP时的4个配置修改说明

    部署PHP时的4个配置修改说明

    这篇文章主要介绍了部署PHP时的4个配置修改说明,非常重要的四点配置修改,希望大家认真阅读本文。
    2015-10-10
  • php伪静态验证码不显示的解决方案

    php伪静态验证码不显示的解决方案

    在本篇文章里小编给大家整理的是关于php伪静态验证码不显示怎么解决的相关知识点内容,以后需要的朋友们参考学习下。
    2019-09-09
  • thinkphp中U方法按路由规则生成url的方法

    thinkphp中U方法按路由规则生成url的方法

    下面小编就为大家分享一篇thinkphp中U方法按路由规则生成url的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • PHP清除数组中所有字符串两端空格的方法

    PHP清除数组中所有字符串两端空格的方法

    这篇文章主要介绍了PHP清除数组中所有字符串两端空格的方法,主要涉及对PHP数组的操作以及字符串操作,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • php遍历对象的方法

    php遍历对象的方法

    这篇文章主要介绍了php遍历对象的方法,帮助大家更好的理解和学习使用php,感兴趣的朋友可以了解下
    2021-04-04
  • php+ajax实现无刷新分页

    php+ajax实现无刷新分页

    这篇文章主要介绍了php+ajax实现无刷新分页的方法,详细讲述了Ajax文件的实现及PHP调用方法,需要的朋友可以参考下
    2015-11-11

最新评论