在本章中,我们将深入探讨 PHP 中的文件操作。这是一个非常重要的主题,因为许多应用程序需要处理文件输入和输出。我们将学习如何打开和关闭文件、读取和写入文件内容,以及进行文件和目录的操作。

文件读写

在 PHP 中,处理文件的基本步骤是打开文件、读取或写入内容,然后关闭文件。让我们详细了解这些步骤。

打开与关闭文件

在使用文件之前,我们首先需要打开它。PHP 提供了 fopen() 函数来执行这个操作。以下是一个简单的例子:

  1. <?php
  2. $file = fopen("example.txt", "r"); // 以只读模式打开文件
  3. if ($file) {
  4. echo "文件已成功打开。";
  5. fclose($file); // 关闭文件
  6. } else {
  7. echo "无法打开文件。";
  8. }
  9. ?>

在上面的代码中,fopen() 函数的第一个参数是要打开的文件路径,第二个参数是模式。常见的模式包括:

  • r:只读模式
  • w:写入模式,如果文件不存在则创建
  • a:追加模式,如果文件不存在则创建
  • r+:读写模式

读取文件内容

读取文件内容的函数有很多,例如 fread(), fgets()file_get_contents()。下面是一些示例:

使用 fread()

  1. <?php
  2. $file = fopen("example.txt", "r");
  3. if ($file) {
  4. $content = fread($file, filesize("example.txt")); // 读取文件内容
  5. echo $content;
  6. fclose($file);
  7. } else {
  8. echo "无法打开文件。";
  9. }
  10. ?>

使用 fgets()

  1. <?php
  2. $file = fopen("example.txt", "r");
  3. if ($file) {
  4. while (($line = fgets($file)) !== false) {
  5. echo $line . "<br>";
  6. }
  7. fclose($file);
  8. } else {
  9. echo "无法打开文件。";
  10. }
  11. ?>

使用 file_get_contents()

  1. <?php
  2. $content = file_get_contents("example.txt");
  3. echo $content;
  4. ?>

写入文件内容

写入文件内容也有多种方法,例如 fwrite(), fputs()file_put_contents()。以下是一些示例:

使用 fwrite()fputs()

  1. <?php
  2. $file = fopen("example.txt", "w");
  3. if ($file) {
  4. fwrite($file, "这是写入的文本\n");
  5. fputs($file, "这是另一个写入的文本\n");
  6. fclose($file);
  7. echo "文件写入成功。";
  8. } else {
  9. echo "无法打开文件。";
  10. }
  11. ?>

使用 file_put_contents()

  1. <?php
  2. file_put_contents("example.txt", "这是使用 file_put_contents 写入的文本\n");
  3. echo "文件写入成功。";
  4. ?>

文件与目录操作

除了读取和写入文件,PHP 还提供了许多函数来操作文件和目录,例如创建、删除和重命名。

创建、删除与重命名文件

创建文件

  1. <?php
  2. $file = fopen("newfile.txt", "w");
  3. if ($file) {
  4. fclose($file);
  5. echo "文件已创建。";
  6. } else {
  7. echo "无法创建文件。";
  8. }
  9. ?>

删除文件

  1. <?php
  2. if (unlink("newfile.txt")) {
  3. echo "文件已删除。";
  4. } else {
  5. echo "无法删除文件。";
  6. }
  7. ?>

重命名文件

  1. <?php
  2. if (rename("oldname.txt", "newname.txt")) {
  3. echo "文件已重命名。";
  4. } else {
  5. echo "无法重命名文件。";
  6. }
  7. ?>

文件与目录的创建、删除与重命名

创建目录

  1. <?php
  2. if (mkdir("newdirectory")) {
  3. echo "目录已创建。";
  4. } else {
  5. echo "无法创建目录。";
  6. }
  7. ?>

删除目录

  1. <?php
  2. if (rmdir("newdirectory")) {
  3. echo "目录已删除。";
  4. } else {
  5. echo "无法删除目录。";
  6. }
  7. ?>

重命名目录

  1. <?php
  2. if (rename("olddirectory", "newdirectory")) {
  3. echo "目录已重命名。";
  4. } else {
  5. echo "无法重命名目录。";
  6. }
  7. ?>

路径操作与文件检查

PHP 提供了一些函数来处理文件路径和检查文件的状态。

获取文件路径

  1. <?php
  2. echo realpath("example.txt");
  3. ?>

检查文件是否存在

  1. <?php
  2. if (file_exists("example.txt")) {
  3. echo "文件存在。";
  4. } else {
  5. echo "文件不存在。";
  6. }
  7. ?>

检查是否为文件或目录

  1. <?php
  2. if (is_file("example.txt")) {
  3. echo "这是一个文件。";
  4. } elseif (is_dir("example")) {
  5. echo "这是一个目录。";
  6. } else {
  7. echo "既不是文件也不是目录。";
  8. }
  9. ?>

文件大小和最后修改时间

  1. <?php
  2. echo "文件大小: " . filesize("example.txt") . " 字节";
  3. echo "最后修改时间: " . date("F d Y H:i:s.", filemtime("example.txt"));
  4. ?>