PHP - 写文件



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

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

fputs() 函数

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

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

这里,$stream 参数是句柄,指向以可写模式打开的文件。$string 参数是要写入的数据,$length 是一个可选参数,指定要写入的最大字节数。

fputs() 函数返回写入的字节数,如果函数不成功则返回 false

示例

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

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

它将产生以下 输出 -

bytes written: 12

示例

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

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

如果在文本编辑器中打开 "hello.txt" 文件,您应该能够看到其中的两行。

示例

在以下 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" 文件应该具有完全相同的内容。

fwrite() 函数

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

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

这里,$stream 参数是指向以可写模式打开的文件的资源。要写入文件的数据在 $data 参数中提供。可选的 $length 参数可以提供以指定要写入的字节数。它应该是 int 类型,写入将在写入 length 个字节或到达数据末尾后停止,以先发生者为准。

fwrite() 函数返回写入的字节数,或者在失败时返回 false 以及 E_WARNING。

示例

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

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

示例

在下面给出的示例代码中,一个已存在的 "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" 文件的副本。

广告