PHP - 文件处理



在PHP中,文件是一个资源对象,可以线性地读取或写入数据。“文件处理”是指PHP中的一组函数,这些函数允许使用PHP代码对磁盘文件执行读/写操作。

文件对象被分类为**流**。任何进行线性读/写操作的资源都是流。其他类似流的对象包括TCP套接字、标准输入流(即由“php://stdin”表示的系统键盘)、标准输出流(由“php://stdout”表示)和错误流“php://stderr”。

**注意** - 常量STDIN、STDOUT和STDERR分别代表相应的标准流。

尽管PHP被认为是用于开发Web应用程序的服务器端脚本语言,但PHP也具有命令行界面来执行控制台I/O操作。

示例

PHP中的readline()函数接受来自标准键盘的用户输入,而echo/print语句在控制台上呈现输出。

<?php
   $str = readline("Type something:");
   echo $str;
?>

它将产生以下**输出** -

C:\xampp\php>php hello.php
Type something: Are you enjoying this PHP tutorial?
Are you enjoying this PHP tutorial?

示例

我们可以通过从“php://stdin”读取输入并将其输出到“php://stdout”来获得相同的效果。

<?php
   $f = fopen("php://stdin", "r");
   echo "Type something: ";

   $str = fgets($f);
   $f1 = fopen("php://stdout", "w");

   fputs($f1, $str);
?>

这里,fopen()函数用于打开**stdin**流以进行读取和**stdout**流以进行写入。

示例

PHP支持各种流协议,用于流相关的函数,例如fopen()、file_exists()等。使用php_get_wrappers()函数可以获取所有已注册包装器的列表。

<?php
   print_r(stream_get_wrappers());
?>

它将产生以下**输出** -

Array
(
   [0] => php
   [1] => file
   [2] => glob
   [3] => data
   [4] => http
   [5] => ftp
   [6] => zip
   [7] => compress.zlib
   [8] => compress.bzip2
   [9] => https
   [10] => ftps
   [11] => phar
)

流被引用为“scheme://target”。例如,文件流是“file://xyz.txt”。

来自控制台的输入数据存储在计算机的主内存(RAM)中,直到应用程序运行。此后,RAM中的内存内容将被清除。

我们希望以一种可以在需要时从持久性介质(如磁盘文件)中检索到的方式来存储它。因此,我们将使用磁盘文件来读取数据,以及作为存储数据的目的地,而不是标准流(键盘用于输入,显示设备用于输出)。

除了在上述示例中使用的读写模式(与标准流的I/O操作)之外,文件流还可以以各种其他模式打开,例如“r+”和“w+”用于同时读/写,“b”用于二进制模式等。

要打开一个磁盘文件以进行读取并获取其引用指针,请使用fopen()函数。

$handle = fopen('file://' . __DIR__ . '/data.txt', 'r');

“file://”方案是默认方案。因此,特别是在处理本地文件时,可以轻松删除它。

**注意** - 建议始终关闭已打开的流。为此,请使用fclose()函数。

fclose($handle);

PHP有几个内置函数用于对文件流执行读/写操作。在后续章节中,我们将探讨文件系统函数。

广告