Php 简明教程
PHP - Append File
在 PHP 中,fopen() 函数返回一个文件指针,用于不同的打开模式,例如“w”表示写入模式,“r”表示读取模式,“r+”或“r+”表示同时读/写操作,以及“a”表示追加模式。
当使用“w”模式参数打开文件时,它总是打开一个新文件。这意味着如果文件已经存在,其内容将丢失。随后的 fwrite() 函数将数据放在文件开始位置。
假设存在一个名为 “new.txt” 的文件,内容如下:
Hello World
TutorialsPoint
PHP Tutorial
以下语句 -
$fp = fopen("new.txt", "w");
删除所有现有数据,然后再写入新内容。
The fseek() Function
PHP 的 fseek() 函数让您能够将文件指针放置到任何您想要的位置 −
fseek(resource $stream, int $offset, int $whence = SEEK_SET): int
$whence 参数是指从哪里计算偏移量。它的值有 −
-
SEEK_SET − 将位置设置为等于偏移字节。
-
SEEK_CUR − 将位置设置为当前位置外加偏移量。
-
SEEK_END − 将位置设置为文件末尾外加偏移量。
Append Mode
无需手动将指针移动到末尾,fopen() 函数中的“a”参数会以追加模式打开文件。每个 fwrite() 语句将内容添加到现有内容的末尾,通过自动将指针移动到 SEEK_END 位置。
<?php
$fp = fopen("new.txt", "a");
fwrite($fp, "\nPHP-MySQL Tutorial\n");
fclose($fp);
?>
fopen() 函数允许的模式之一是“r+”模式,使用此模式,文件执行读/追加操作。要读取任何位置的数据,您可以利用 fseek() 将指针置于所需的字节。但是,每次 fwrite() 操作仅在末尾写新内容。
Example
在下面的程序中,文件在“a+”模式下打开。为了读取第一行,我们使文件位置偏移 0——从开头开始。然而, fwrite() 语句仍然在末尾添加新内容,并且不会覆盖后面的一行,就像在“r+”模式打开时那样。
<?php
$fp = fopen("new.txt", "a+");
fseek($fp, 0, SEEK_SET);
$data = fread($fp, 12);
echo $data;
fwrite($fp, "PHP-File Handling");
fclose ($fp);
?>
因此,如果文件在“r+/w+”模式或“a/a+”模式下打开,我们就可以追加数据到现有文件。