PHP - 文件处理



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

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

注意: 常数 STDINSTDOUT STDERR 代表相应的标准流。

尽管 PHP 被视为用于开发 Web 应用程序的服务器端脚本语言,但 PHP 也有一个命令行界面来执行控制台 IO 操作。

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 中的内存内容将被擦除。

我们希望以这样一种方式存储它,以便在需要时可以在持久介质(例如磁盘文件)中检索它。因此,我们将使用磁盘文件来读取数据,并使用 destination 来存储数据,而不是标准流(用于输入的键盘和用于输出的显示设备)。

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

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


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

file://” 方案是默认方案。因此,它很容易被删除,尤其是在处理本地文件时。

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


 fclose($handle);

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