PHP - 删除文件



PHP 没有 delete 关键字或 delete() 函数。它提供 unlink() 函数,调用该函数时,会从文件系统中删除文件。它类似于 Unix/C 的 unlink 函数。

如果删除操作无法完成,PHP 将返回 false 并显示 E_WARNING 消息。

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

unlink() 函数的必需字符串参数是一个字符串,它引用要删除的文件。

示例

以下代码演示了 unlink() 函数的简单用法:

<?php
   $file = "my_file.txt";

   if (unlink($file)) {
      echo "The file was deleted successfully.";
   } else {
      echo "The file could not be deleted.";
   }
?>

删除指向文件的符号链接

unlink() 函数也可以删除指向文件的符号链接。但是,删除符号链接不会删除原始文件。符号链接是现有文件的快捷方式。

在 Windows 中,以管理员权限打开命令提示符,并使用 mlink 命令和 /h 开关创建指向文件的符号链接。(/j 开关用于指向文件夹的符号链接)

mklink /h hellolink.lnk hello.txt
Hardlink created for hellolink.lnk <<===>> hello.txt

在 Ubuntu Linux 中,要创建指向文件的符号链接,可以使用以下命令:

ln -s /path/to/original_file /path/to/symlink

要创建指向目录的符号链接,可以使用以下命令:

ln -s /path/to/original_directory /path/to/symlink

在 PHP 中,还有一个 symlink() 函数用于此目的。

symlink(string $target, string $link): bool

示例

使用以下代码创建一个符号链接:

<?php
   $target = 'hello.txt';
   $link = 'hellolink.lnk';
   symlink($target, $link);

   echo readlink($link);
?>

现在删除上面创建的符号链接:

unlink("hellolink.lnk");

如果检查当前工作目录,符号链接将被删除,而原始文件保持不变。

如何在 PHP 中重命名文件

您可以使用操作系统控制台的相应命令来更改现有文件的文件名。例如,Linux 终端中的“mv 命令”或 Windows 命令提示符中的“rename 命令”可以帮助您更改文件名。

但是,要以编程方式重命名文件,PHP 的内置库包含一个 rename() 函数。

以下是 rename() 函数的 语法

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

$from$to 字符串都是文件名,分别代表现有文件和新文件名。rename() 函数尝试将 $from 重命名为 $to,如有必要,可在目录之间移动它。

如果您正在重命名一个 文件,并且 $to 已经存在,则它将被覆盖。如果您正在重命名一个 目录,并且 $to 存在,则此函数将发出 警告

要将“hello.txt”重命名为“test.txt”:

<?php
   rename("hello.txt", "test.txt");
?>

您还可以采用一种稍微间接的方法来重命名文件。复制现有文件,然后删除原始文件。这也会将“hello.txt”重命名为“test.txt”:

copy("hello.txt", "test.txt");
unlink("hello.txt");
广告