在本章中,我们将教您如何打开、读取和关闭服务器上的文件。
打开文件的更好方法是使用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 |
这个fread()
函数从打开的文件中读取。
第一个参数为fread()
包含要读取的文件的名称,第二个参数指定要读取的最大字节数。
以下 PHP 代码读取 "webdictionary.txt" 文件直至末尾:
fread($myfile,filesize("webdictionary.txt"));
这个fclose()
函数用于关闭一个打开的文件。
使用完所有文件后关闭它们是一个很好的编程习惯。您不希望服务器上运行的打开文件占用资源!
这个fclose()
需要我们要关闭的文件的名称(或保存文件名的变量):
<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>
这个fgets()
函数用于从文件中读取一行。
下面的示例输出 "webdictionary.txt" 文件的第一行:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
运行示例 »
笔记:拨打电话后fgets()
函数时,文件指针已移动到下一行。
这个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);
?>
运行示例 »
这个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 文件系统参考。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!