Php 简明教程

PHP - Write File

PHP 内置函数库提供了两个函数来执行文件流的写操作。这些函数是 fwrite()fputs()

为了能在文件中写入数据,必须以写模式 (w)、追加模式 (a)、读/写模式 (r+ 或 w+) 或二进制写/追加模式 (rb+、wb+ 或 wa) 打开此文件。

The fputs() Function

fputs() 函数将字符串写入以可写模式打开的文件中。

fputs(resource $stream, string $string, int $length)

此处, $stream 参数是对以可写模式打开的文件句柄。 $string 参数是要写入的数据,而 $length 是可选参数,指定要写入的最大字节数。

fputs() 函数返回写入的字节数,或 false (如果函数执行失败)。

Example

以下代码打开了新文件,其中写入了一个字符串,并返回写入的字节数。

<?php
   $fp = fopen("hello.txt", "w");
   $bytes = fputs($fp, "Hello World\n");
   echo "bytes written: $bytes";
   fclose($fp);
?>

它将生成以下 output

bytes written: 12

Example

如果需要在较早存在的文件中添加文本,必须以追加模式打开此文件( a )。让我们在前面的示例中再向同一文件中添加一个字符串。

<?php
   $fp = fopen("hello.txt", "a");
   $bytes = fputs($fp, "Hello PHP");
   echo "bytes written: $bytes";
   fclose($fp);
?>

如果你在文本编辑器中打开“hello.txt”文件,你应该可以看到其中的这两行。

Example

在以下 PHP 脚本中,一个已存在的文件 (hello.txt) 会在循环中逐行读取,并且每行会被写入到另一个文件 (new.txt)

假设“hello.txt”包含以下文本:

Hello World
TutorialsPoint
PHP Tutorials

以下是创建现有文件副本的 PHP 代码:

<?php
   $file = fopen("hello.txt", "r");
   $newfile = fopen("new.txt", "w");
   while(! feof($file)) {
      $str = fgets($file);
      fputs($newfile, $str);
   }
   fclose($file);
   fclose($newfile);
?>

新创建的“new.txt”文件应具有完全相同的内容。

The fwrite() Function

frwrite() 函数是 fread() 函数的对应函数。它执行二进制安全写操作。

fwrite(resource $stream, string $data, ?int $length = null): int|false

此处, $stream 参数是指向以可写模式打开的文件的资源。要写入该文件的数据提供在 $data 参数中。可以提供可选的 $length 参数来指定要写入的字节数。其应该是 int ,在写入长度字节之后或到达数据的末尾(以先发生的为准)后,写操作会停止。

fwrite() 函数返回写入的字节数,或 false (如果失败,则会同时返回 E_WARNING)。

Example

以下程序打开新文件,执行写操作并显示写入的字节数。

<?php
   $file = fopen("/PhpProject/sample.txt", "w");
   echo fwrite($file, "Hello Tutorialspoint!!!!!");
   fclose($file);
?>

Example

在下面给出的示例代码中,一个现有文件“welcome.png”是以二进制读模式打开的。fread() 函数用于将它的字节读入“$data”变量中,然后将其写入到另一个文件“new.png”:

<?php
   $name = "welcome.png";
   $file = fopen($name, "rb");
   $newfile = fopen("new.png", "wb");
   $size = filesize($name);
   $data = fread($file, $size);
   fwrite($newfile, $data, $size);
   fclose($file);
   fclose($newfile);
?>

运行以上代码。当前目录中现在应有一个现有“welcome.png”文件的副本。