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 文件系统参考手册。