PHP 文件打开/读取/关闭

在本章中,我们将教您如何在服务器上打开、读取和关闭文件。

PHP 打开文件 - fopen()

打开文件的更好方法是使用 fopen() 函数。此函数比 readfile() 函数提供了更多的选项。

我们将在课程中使用文本文件 "webdictionary.txt":

  • AJAX = Asynchronous JavaScript and XML
  • CSS = Cascading Style Sheets
  • HTML = Hyper Text Markup Language
  • PHP = PHP Hypertext Preprocessor
  • SQL = Structured Query Language
  • SVG = Scalable Vector Graphics
  • XML = EXtensible Markup Language

fopen() 的第一个参数包含要打开的文件名,第二个参数指定以哪种模式打开文件。下面的例子还会在 fopen() 函数无法打开指定文件时生成一条消息:

实例

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>

运行实例

提示:fread()fclose() 函数将在下面解释。

文件可以以以下模式之一打开:

模式 描述
r 只读方式打开文件。文件指针指向文件开头。
w

只写方式打开文件。

如果文件不存在则创建新文件。

如果文件存在,则清空文件内容。

文件指针指向文件开头。

a

只写方式打开文件。

如果文件不存在,则创建新文件。

如果文件存在,则不会清空文件内容。

文件指针指向文件末尾。

x

以只写方式创建新文件。

如果文件已存在,则返回 FALSE 并产生错误。

r+ 读写方式打开文件。文件指针指向文件开头。
w+

读写方式打开文件。

如果文件不存在则创建新文件。

如果文件存在,则清空文件内容。

文件指针指向文件开头。

a+

读写方式打开文件。

如果文件不存在则创建新文件。

如果文件存在,则不会清空文件内容。

文件指针指向文件末尾。

x+

以读写方式创建新文件。

如果文件已存在,则返回 FALSE 并产生错误。

PHP 读取文件 - fread()

fread() 函数从打开的文件中读取内容。

fread() 的第一个参数包含要从中读取的文件的名称,第二个参数指定要读取的最大字节数。

以下 PHP 代码将 "webdictionary.txt" 文件读取到末尾:

fread($myfile,filesize("webdictionary.txt"));

PHP 关闭文件 - fclose()

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

提示:在完成文件操作后关闭所有文件是一个良好的编程习惯。您会不希望服务器上有未关闭的文件占用资源!

fclose() 需要我们想要关闭的文件的名称(或包含文件名的变量):

<?php
$myfile = fopen("webdictionary.txt", "r");
// 执行一些代码...
fclose($myfile);
?>

PHP 读取单行 - fgets()

fgets() 函数用于从文件中读取单行。

下例输出 "webdictionary.txt" 文件的第一行:

实例

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>

运行实例

注意:在调用 fgets() 函数后,文件指针已移至下一行。

PHP 检查文件末尾 - feof()

feof() 函数检查是否已达到“文件末尾”(EOF)。

feof() 函数对于循环遍历未知长度的数据很有用。

下例逐行读取 "webdictionary.txt" 文件,直到达到文件末尾:

实例

<?php
$myfile = fopen("webdictionary.txt", "r") or die("无法打开文件!");
// Output one line until end-of-file
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>

运行实例

PHP 读取单个字符 - fgetc()

fgetc() 函数用于从文件中读取单个字符。

下例逐字符读取 "webdictionary.txt" 文件,直到达到文件末尾:

实例

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

运行实例

注意:在调用 fgetc() 函数后,文件指针移至下一个字符。

完整的 PHP 文件系统参考手册

如需获取文件系统函数的完整参考,请查看我们的完整 PHP 文件系统参考手册