目录

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()下面将解释功能。

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

Modes Description
r Open a file for read only. File pointer starts at the beginning of the file
w Open a file for write only. Erases the contents of the file or creates a new file if it doesn't exist. File pointer starts at the beginning of the file
a Open a file for write only. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn't exist
x Creates a new file for write only. Returns FALSE and an error if file already exists
r+ Open a file for read/write. File pointer starts at the beginning of the file
w+ Open a file for read/write. Erases the contents of the file or creates a new file if it doesn't exist. File pointer starts at the beginning of the file
a+ Open a file for read/write. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn't exist
x+ Creates a new file for read/write. Returns FALSE and an error if file already exists


PHP 读取文件 - fread()

这个fread()函数从打开的文件中读取。

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

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

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

PHP 关闭文件 - fclose()

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

使用完所有文件后关闭它们是一个很好的编程习惯。您不希望服务器上运行的打开文件占用资源!

这个fclose()需要我们要关闭的文件的名称(或保存文件名的变量):

<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
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()函数检查是否已到达 "end-of-file" (EOF)。

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

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

示例

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 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 文件系统参考


PHP练习

通过练习测试一下

练习:

打开一个文件,并编写正确的语法以一次输出一个字符,直到文件结尾。

$myfile = fopen("webdict.txt", "r");
while(!($myfile)) {
  echo ($myfile);
}