PHP 简明教程

PHP 文件打开/读取/关闭

1. PHP 打开文件 - fopen()

相比 readfile() 函数,fopen() 提供了更灵活的文件处理方式。

fopen() 函数的首个参数包含要打开的文件名,第二个参数规定打开文件所用的模式。如果 fopen() 函数无法打开指定文件,则会生成一条消息。

代码示例:

<?php
$myfile = fopen("webdictionary.txt", "r") or die("无法打开文件!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>

1.1 文件打开模式

文件可以通过下列模式之一进行打开:

模式描述
r只读方式打开。文件指针从文件头开始。
w只写方式打开。删除文件内容或在不存在时创建新文件。文件指针从文件头开始。
a追加方式打开。保留文件内容并在末尾写入。若不存在则创建新文件。
x只写方式创建新文件。若文件已存在,则返回 FALSE 并产生错误。
r+读写方式打开。文件指针从文件头开始。
w+读写方式打开。删除文件内容或在不存在时创建新文件。文件指针从文件头开始。
a+读/写追加方式打开。保留文件内容。若不存在则创建新文件。
x+读/写方式创建新文件。若文件已存在,则返回 FALSE 并产生错误。

2. PHP 读取文件 - fread()

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

其第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。

代码示例:

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

3. PHP 关闭文件 - fclose()

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

在完成所有操作后关闭所有文件是一个良好的编程习惯。您不希望一个打开的文件持续占用服务器资源。

fclose() 需要待关闭文件的名称(或者更确切地说是指向该文件的变量):

代码示例:

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

4. PHP 读取单行文件 - fgets()

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

代码示例:

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

<?php
$myfile = fopen("webdictionary.txt", "r") or die("无法打开文件!");
echo fgets($myfile);
fclose($myfile);
?>

注意:调用 fgets() 后,文件指针会移动到下一行。

5. PHP 检查文件末尾 - feof()

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

feof() 对于遍历长度未知的文件非常有用。

代码示例:

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

<?php
$myfile = fopen("webdictionary.txt", "r") or die("无法打开文件!");
// 输出单行直到文件末尾
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>

6. PHP 读取单字符 - fgetc()

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

代码示例:

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

<?php
$myfile = fopen("webdictionary.txt", "r") or die("无法打开文件!");
// 输出单字符直到文件末尾
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

注意:调用 fgetc() 后,文件指针会移动到下一个字符。