当前位置:首页 > PHP教程 > php文件操作 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2024-04-28 11:55:59 浏览: 评论:0 

这篇文章主要为大家详细介绍了PHP中常见的文件操作的相关知识,文字的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下。

一、文件读取的5种方法

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

  1. file_get_contents
  2. string $filename
  3. bool $use_include_path = false, 
  4. ?resource $context = null, 
  5. int $offset = 0, 
  6. ?int $length = null 
  7. ): string|false 

可以读取本地的文件

也可以用来打开一个网络地址实现简单的网页抓取

可以模拟post请求(stream_context_create)

  1. $fileName = 'test.txt'
  2. if (file_exists($fileName)) { 
  3.     $str = file_get_contents($fileName); 
  4.     echo $str
  5. else { 
  6.     print_r("文件不存在"); 

2、file: 把整个文件读入一个数组中

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

数组的每个元素对应于文件中的一行

可以读取本地的文件

也可以用来读取一个网络文件

  1. $lines = file('test.txt');  
  2. foreach ($lines as $line_num => $line) { 
  3.     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 字节。

  1. $fp = fopen("test.txt""r"); 
  2. if ($fp) { 
  3.     while (!feof($fp)) { 
  4.         $line = fgets($fp); 
  5.         echo $line . "<br />\n"
  6.     } 
  7.     fclose($fp); 

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

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

  1. $fp = fopen("test.txt""r"); 
  2. if ($fp) { 
  3.     $content = ""
  4.     while (!feof($fp)) { 
  5.         $content .= fread($fp, 1024); 
  6.     } 
  7.     #$contents = fread($handlefilesize($filename)); 
  8.     echo $content
  9.     fclose($fp); 

4、SplFileObject 类

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

5、调用linux命令

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

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

二、文件写入

1、file_put_contents: 将数据写入文件

  1. file_put_contents
  2. string $filename
  3. mixed $data
  4. int $flags = 0, 
  5. ?resource $context = null 
  6. ): int|false 
  7.  
  8. $content = "Hello, world!"// 要写入文件的内容 
  9. $file = "test.txt"// 文件路径 
  10.  
  11. file_put_contents($file$content); 

2、fwrite: 写入文件(可安全用于二进制文件)

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

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

3、SplFileObject 类

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

1、copy: 拷贝文件

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

  1. $file = 'test.txt'
  2. $newFile = 'test2.txt'
  3.  
  4. if (!copy($file$newFile)) { 
  5.     echo "failed to copy $file...\n"

2、unlink: 删除文件

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

  1. $fileName = 'test2.txt'
  2. if (file_exists($fileName)) { 
  3.    if (unlink($fileName)) { 
  4.        echo '删除成功'
  5.    } 

3、rename: 重命名文件

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

可以在不同目录间移动

如果重命名文件时 to 已经存在,将会覆盖掉它

如果重命名文件夹时 to 已经存在,本函数将导致一个警告

  1. $fileName = 'test.txt'
  2. $rename = 'test_new.txt'
  3. if (file_exists($fileName)) { 
  4.    if (rename($fileName$rename )) { 
  5.        echo '重命名成功'
  6.    } 
  7. }

Tags: PHP文件操作

分享到: