PHP - 文件与 I/O
PHP 文件与 I/O 是读取、写入、创建和删除文件的进程。PHP 提供了各种函数来简化文件管理。我们可以打开一个文件并对其进行写入或读取。像 fopen()、fread() 和 fwrite() 这样的函数非常有用。
文件允许您存储数据以供后续使用。从文件中获取数据同样简单。在 Web 应用程序中,文件管理非常重要。它允许安全地存储和管理数据。
本章将解释以下与文件相关的函数 —
- 打开文件
- 读取文件
- 写入文件
- 关闭文件
打开和关闭文件
PHP 的 fopen() 函数用于打开文件。它需要两个参数,第一个是文件名,第二个是操作模式。
文件模式可以指定为下表中的六种选项之一。
| 序号 | 模式与用途 |
|---|---|
| 1 |
r 仅打开文件进行读取。 将文件指针置于文件开头。 |
| 2 |
r+ 打开文件进行读取和写入。 将文件指针置于文件开头。 |
| 3 |
w 仅打开文件进行写入。 将文件指针置于文件开头。 并将文件截断为零长度。如果文件不存在,则尝试创建文件。 |
| 4 |
w+ 仅打开文件进行读取和写入。 将文件指针置于文件开头。 并将文件截断为零长度。如果文件不存在,则尝试创建文件。 |
| 5 |
a 仅打开文件进行写入。 将文件指针置于文件末尾。 如果文件不存在,则尝试创建文件。 |
| 6 |
a+ 仅打开文件进行读取和写入。 将文件指针置于文件末尾。 如果文件不存在,则尝试创建文件。 |
如果打开文件失败,fopen 将返回 false 值,否则返回一个 文件指针,用于进一步读取或写入该文件。
对打开的文件进行更改后,使用 fclose() 函数关闭它是重要的。fclose() 函数需要文件指针作为参数,关闭成功时返回 true,失败时返回 false。
读取文件
使用 fopen() 函数打开文件后,可以使用名为 fread() 的函数读取它。该函数需要两个参数:文件指针和以字节表示的文件长度。
可以使用 filesize() 函数获取文件长度,该函数以文件名作为参数,并返回以字节表示的文件大小。
因此,使用 PHP 读取文件的步骤如下。
使用 fopen() 函数打开文件。
使用 filesize() 函数获取文件长度。
使用 fread() 函数读取文件内容。
使用 fclose() 函数关闭文件。
示例
以下示例将文本文件的内容赋值给一个变量,然后在网页上显示这些内容。
<html>
<head>
<title>使用 PHP 读取文件</title>
</head>
<body>
<?php
$filename = "tmp.txt";
$file = fopen( $filename, "r" );
if( $file == false ) {
echo ( "打开文件时出错" );
exit();
}
$filesize = filesize( $filename );
$filetext = fread( $file, $filesize );
fclose( $file );
echo ( "文件大小 : $filesize bytes" );
echo ( "<pre>$filetext</pre>" );
?>
</body>
</html>
它将产生以下结果 —

写入文件
可以使用 PHP 的 fwrite() 函数写入新文件或向现有文件追加文本。该函数需要两个参数,分别指定 文件指针 和要写入的数据字符串。可选地,可以包含第三个整数参数来指定要写入的数据长度。如果包含第三个参数,写入将在达到指定长度后停止。
示例
以下示例创建一个新的文本文件,然后在其中写入一个简短的文本标题。关闭文件后,使用 file_exists() 函数(以文件名作为参数)确认其存在。
<?php
$filename = "/home/user/guest/newfile.txt";
$file = fopen( $filename, "w" );
if( $file == false ) {
echo ( "打开新文件时出错" );
exit();
}
fwrite( $file, "This is a simple test\n" );
fclose( $file );
?>
<html>
<head>
<title>Writing a file using PHP</title>
</head>
<body>
<?php
$filename = "newfile.txt";
$file = fopen( $filename, "r" );
if( $file == false ) {
echo ( "打开文件时出错" );
exit();
}
$filesize = filesize( $filename );
$filetext = fread( $file, $filesize );
fclose( $file );
echo ( "文件大小 : $filesize bytes" );
echo ( "$filetext" );
echo("文件名: $filename");
?>
</body>
</html>
它将产生以下结果 −
我们在 PHP 文件系统函数章节中已经涵盖了所有与文件输入输出的相关函数。