PHP File() 处理和函数

⚡ 智能摘要

PHP 文件处理使用丰富的内置函数集来创建、读取、写入、复制和删除服务器上的文件。本教程将通过实际示例介绍 file_exists、fopen 及其模式、fwrite、fclose、fgets、copy、unlink 和 file_get_contents 等函数。

  • 📄 文件存储内容: 文件可以保存配置设置、日志和简单数据,与数据库相比,它是一种廉价的永久存储选项。
  • 🔍 检查文件: file_exists() 会在读取或创建文件之前确认文件是否存在,从而避免错误。
  • 📂 打开文件: fopen() 以 r、w 或 a 等模式打开文件,这些模式控制读取、写入和追加操作。
  • ✍️ 写作与结尾: fwrite() 将数据发送到文件句柄,fclose() 在工作完成后释放句柄。
  • ???? 读取文件: fgets() 一次读取一行,而 file_get_contents() 将整个文件作为单个字符串返回。
  • 🗂️ 复制和删除: copy() 将文件复制到新路径,而 unlink() 从服务器永久删除文件。
  • 🤖 人工智能辅助: AI 工具可以生成文件解析代码,并快速解决权限错误或无法打开流的错误。

PHP 文件处理

什么是文件?

文件只是计算机上存储信息的资源。

文件通常用于存储以下信息:

  • 程序的配置设置
  • 简单的数据,例如联系人姓名和电话号码。
  • 图像、图片、照片及类似媒体。

PHP 文件格式支持

PHP 文件函数支持多种文件格式,包括:

  • 文件.txt
  • 文件.log
  • 文件.自定义扩展名,例如 file.xyz
  • 文件.csv
  • 文件.gif、文件.jpg 和类似图像格式

文件在多种情况下都很有用:

  • 与需要其他软件和技能来管理 DBMS 系统的数据库相比,它们为简单数据提供了一种永久、经济高效的数据存储解决方案。
  • 你想存储一些简单的数据,例如服务器日志,以便日后检索和分析。
  • 你想保存程序设置,例如 program.ini 文件。

PHP 文件函数

PHP 通过其丰富的内置函数,为处理文件提供了一种便捷的方式。

Opera系统,如 Windows 和 macOS 不区分大小写,而 Linux or Unix的 操作系统区分大小写。

采用仅使用小写字母等命名规则进行文件命名是一种良好的做法,可以确保最大的跨平台兼容性。

现在让我们来看一些最常用的PHP文件函数。

PHP file_exists() 函数

该函数用于判断文件是否存在。

  • 当我们想在处理文件之前知道文件是否存在时,它就派上用场了。
  • 当创建新文件并且想要确保该文件在服务器上尚不存在时,您也可以使用此功能。

file_exists 函数的语法如下。

<?php
file_exists($filename);
?>

这里,

  • “file_exists()” 是 PHP 函数,如果文件存在则返回 true,如果不存在则返回 false。
  • “$filename”是要检查的文件的路径和名称。

下面的代码使用 file_exists 函数来确定文件 my_settings.txt 是否存在。

<?php
if (file_exists('my_settings.txt'))
{
echo 'file found!';
}
else
{
echo 'my_settings.txt does not exist';
}
?>

将上述代码保存到名为 file_function.php 的文件中。假设您已将文件保存在 htdocs 目录下的 phptuts 文件夹中,请打开该文件。 URL http://localhost/phptuts/file_function.php 在浏览器中,您将看到以下结果。

PHP file_exists() 函数

PHP fopen() 函数

fopen 函数用于打开文件。它的语法如下。

<?php
fopen($file_name,$mode,$use_include_path,$context);
?>

这里,

  • “fopen” 是 PHP 打开文件函数
  • “$file_name”是要打开的文件的名称
  • “$mode”表示文件应以何种模式打开。下表列出了所有模式。
时尚 描述
r • 从头开始​​读取文件。
• 如果文件不存在,则返回 false。
• 只读
r+ • 从头开始​​读取文件
• 如果文件不存在,则返回 false。
• 读和写
w • 在开头写入文件
• 将文件截断为零长度
• 如果文件不存在,请尝试创建它。
• 只写
w+ • 从开头写入文件,将文件截断为零长度
• 如果文件不存在,请尝试创建它。
• 读和写
a • 附加到文件末尾
• 如果文件不存在,请尝试创建它。
• 只写
a+ • 附加到文件末尾
• 如果文件不存在,请尝试创建它。
• 读和写
  • “$use_include_path”为可选参数,默认值为false。如果设置为true,则该函数也会在包含路径中搜索。
  • “$context”是可选的,可用于指定上下文支持。

PHP fwrite() 函数

fwrite 函数用于向文件写入数据。

它具有以下语法。

<?php
fwrite($handle, $string, $length);
?>

这里,

  • “fwrite” 是用于写入文件的 PHP 函数
  • “$handle” 是文件指针资源
  • “$string”是要写入文件的数据。
  • “$length”是可选参数,可用于指定最大文件长度。

PHP fclose() 函数

fclose() 函数用于关闭 PHP 中已打开的文件。

它具有以下语法。

<?php
fclose($handle);
?>

这里,

  • “fclose” 是 PHP功能 关闭打开的文件
  • “$handle” 是文件指针资源。

现在让我们来看一个创建 my_settings.txt 文件的例子。我们将使用 fopen、fwrite 和 fclose 函数。

下面的代码“create_my_settings_file.php”实现了上述示例。

打开文件
<?php

$fh = fopen("my_settings.txt", 'w')

or

die("Failed to create file"); ?>
关闭文件
<?php

fclose($fh);

?>
创建文件
<?php

$fh = fopen("my_settings.txt", 'w') or die("Failed to create file");

$text = <<<_END

localhost;root;pwd1234;my_database

_END;

fwrite($fh, $text) or die("Could not write to file");

fclose($fh);

echo "File 1 written successfully"; ?>

测试代码

打开 URL http://localhost/phptuts/create_my_settings.php 您的浏览器。

您将看到以下页面。

PHP fclose 函数

注意:如果您的磁盘已满或者您没有权限写入文件,您将收到错误消息。

切换回 URL http://localhost/phptuts/file_function.php你得到了什么样的结果?

PHP fgets() 函数

fgets 函数用于逐行读取 PHP 文件。它的基本语法如下。

<?php
fgets($handle);
?>

这里,

  • “fgets”是PHP中用于读取文件行的​​函数。
  • “$handle” 是文件指针资源。

现在让我们来看一个使用 fopen 和 fgets 函数读取 my_settings.txt 文件的示例。

read_my_settings.php 下面的代码实现了上面的例子。

<?php
$fh = fopen("my_settings.txt", 'r') or die("File does not exist or you lack permission to open it");
$line = fgets($fh);
echo $line; fclose($fh);
?>

这里,

  • “fopen”函数返回文件路径中指定文件的指针
  • 如果发生错误,则会调用“die()”函数。它会显示一条消息并终止脚本的执行。

PHP copy() 函数

PHP 的 copy 函数用于复制文件。它的基本语法如下。

<?php
copy($file,$copied_file);
?>

这里,

  • “$file”指定要复制的文件的文件路径和名称。
  • “$copied_file”指定复制文件的路径和名称

下面的代码说明了实现过程。

<?php
copy('my_settings.txt', 'my_settings_backup.txt') or die("Could not copy file");
echo "File successfully copied to 2";
?>

删除文件

unlink 函数用于删除文件。以下代码展示了其实现方式。

<?php
if (!unlink('my_settings_backup.txt'))
{
echo "Could not delete file";
}
else
{
echo "File 1 successfully deleted";
}
?>

PHP file_get_contents() 函数

file_get_contents函数用于读取整个文件内容。

file_get_contents 和 fgets 的区别在于 file_get_contents 将文件数据作为字符串返回,而 fgets 逐行读取文件。

下面的代码说明了实现过程。

<?php
echo "<pre>"; // Enables display of line feeds
echo file_get_contents("my_settings.txt");
echo "</pre>"; // Terminates pre tag
?>

PHP 文件函数快速参考

下表总结了本教程中介绍的文件函数。

功能 描述
文件已存在 用于判断文件是否存在
打开 用于打开文件。返回指向已打开文件的指针
写 用于写入文件
关闭 用于关闭打开的文件
获取 用于逐行读取文件
复制 用于复制现有文件
取消链接 用于删除现有文件
的file_get_contents 用于以字符串形式返回文件内容

常见问题

fgets 每次调用读取一行,fread 从打开的句柄读取一定数量的字节,file_get_contents 一次调用即可将整个文件读取到字符串中,而无需 fopen 或 fclose。

fwrite 函数会将数据写入已打开的文件句柄,因此需要先调用 fopen 和 fclose 函数。file_put_contents 函数只需一次调用即可完成文件的打开、写入和关闭,因此对于简单的写入操作来说,它是更简洁的选择。

使用 `is_writable('file.txt')` 测试写入权限,然后再写入文件;使用 `file_exists()` 确认文件是否存在。在 Unix 系统中,如果 Web 服务器拥有该文件,可以使用 `chmod()` 调整其权限。

是的。请描述文件格式,例如 CSV、JSON 或日志布局,AI 可以使用 fgetcsv、json_decode 或自定义循环生成代码,并处理文件缺失或格式错误的情况。请使用真实数据进行测试。

是的。分享路径和错误信息,人工智能可以识别错误的相对路径、缺失的文件或权限问题,然后建议使用绝对路径、创建文件或调整权限。

总结一下这篇文章: