PHP - 文件是否存在



在对文件进行任何处理之前,先检查你尝试打开的文件是否存在通常非常有用。否则,程序可能会引发运行时异常

PHP 的内置库在这方面提供了一些实用函数。本章将讨论的一些函数包括:

  • file_exists() - 测试文件是否存在

  • is_file() - 如果 fopen() 返回的句柄指向文件或目录。

  • is_readable() - 测试你打开的文件是否允许读取数据

  • is_writable() - 测试是否允许向文件写入数据

file_exists() 函数

此函数可用于文件和目录。它检查给定的文件或目录是否存在。

file_exists(string $filename): bool

此函数唯一的参数是表示文件/目录完整路径的字符串。函数根据文件是否存在返回 true 或 false。

示例

以下程序检查文件“hello.txt”是否存在。

<?php
   $filename = 'hello.txt';
   if (file_exists($filename)) {
      $message = "The file $filename exists";
   } else {
      $message = "The file $filename does not exist";
   }
   echo $message;
?>

如果文件存在于当前目录中,则消息为:

The file hello.txt exists

如果不存在,则消息为:

The file hello.txt does not exist

示例

指向文件的字符串可以具有相对路径或绝对路径。假设“hello.txt”文件位于当前目录内的“hello”子目录中。

<?php
   $filename = 'hello/hello.txt';
      if (file_exists($filename)) {
   $message = "The file $filename exists";
   } else {
      $message = "The file $filename does not exist";
   }
   echo $message;
?>

它将产生以下输出

The file hello/hello.txt exists

示例

尝试给出如下所示的绝对路径:

<?php
   $filename = 'c:/xampp/htdocs/hello.txt';
   if (file_exists($filename)) {
      $message = "The file $filename exists";
   } else {
      $message = "The file $filename does not exist";
   }
   echo $message;
?>

它将产生以下输出

The file c:/xampp/htdocs/hello.txt exists

is_file() 函数

file_exists() 函数对现有文件和目录都返回trueis_file() 函数可帮助你确定它是否是文件。

is_file ( string $filename ) : bool

以下示例显示了is_file() 函数的工作方式:

<?php
   $filename = 'hello.txt';

   if (is_file($filename)) {
      $message = "$filename is a file";
   } else {
      $message = "$filename is a not a file";
   }
   echo $message;
?>

输出表明它是一个文件:

hello.txt is a file

现在,将“$filename”更改为目录,然后查看结果:

<?php
   $filename = hello;

   if (is_file($filename)) {
      $message = "$filename is a file";
   } else {
      $message = "$filename is a not a file";
   }
   echo $message;
?>

现在你会被告知“hello”不是文件。

请注意,is_file() 函数接受一个$filename,并且仅当$filename 是文件且存在时才返回true

is_readable() 函数

有时,你可能想事先检查是否可以读取文件。is_readable() 函数可以确定这一事实。

is_readable ( string $filename ) : bool

示例

以下是is_readable() 函数工作方式的示例:

<?php
   $filename = 'hello.txt';
   if (is_readable($filename)) {
      $message = "$filename is readable";
   } else {
      $message = "$filename is not readable";
   }
   echo $message;
?>

它将产生以下输出

hello.txt is readable

is_writable() 函数

你可以使用 is_writable() 函数来检查文件是否存在以及是否可以对给定文件执行写入操作。

is_writable ( string $filename ) : bool

示例

以下示例显示了is_writable() 函数的工作方式:

<?php
   $filename = 'hello.txt';

   if (is_writable($filename)) {
      $message = "$filename is writable";
   } else {
      $message = "$filename is not writable";
   }
   echo $message;
?>

对于普通的存档文件,程序会指出它是可写的。但是,将其属性更改为“只读”并运行程序。现在你得到:

hello.txt is writable
广告