Php 简明教程

PHP - Open File

PHP 的内置函数库提供了 fopen() 函数来打开一个文件或任何其他流,并返回其“引用指针”,也称为“句柄”。

PHP 中的 fopen() 函数类似于 C 中的 fopen(),只不过在 C 中,它无法打开 URL。

Syntax of fopen()

fopen() 函数具有以下签名 -

fopen(
   string $filename,
   string $mode,
   bool $use_include_path = false,
   ?resource $context = null
): resource|false

参数 $filename$mode 是必需的。以下是参数说明 -

  1. $filename - 此参数是一个字符串,表示要打开的资源。它可以是本地文件系统中的文件,也可以是具有 scheme:// 前缀的远程服务器上的文件。

  2. $mode - 一个字符串,用于表示对文件/资源的访问类型。

  3. $use_include_path - 一个可选布尔参数,如果要搜索 include_path 中的文件,可以将其设置为“1”或 true。

  4. $context - 一个上下文流资源。

Modes of Opening a File

PHP 允许文件以以下模式打开 -

Modes

Description

r

读出打开一个文件。

w

只写打开文件,即使文件已存在,也会创建新文件。

a

以追加模式打开文件

x

创建新文件,只写。

r+

读/写打开文件。

w+

读/写打开文件,即使文件已存在,也会创建新文件。

a+

以追加模式读/写打开文件。

x+

创建新文件,读/写。

c

如果文件不存在,则以写方式打开;但如果存在,则不截断(w 模式除外)。

c++

如果文件不存在,则以读/写方式打开;但如果存在,则不截断(w 模式除外)。

e

打开文件描述符时,设置 close-on-exec 标识。仅适用于符合 POSIX.1-2008 规范的 PHP 编译系统中。

如果 fopen() 函数执行成功,则会返回绑定到文件流的“文件指针”或“句柄”资源。不过,如果失败,则会返回 FALSE,并发出 E_WARNING。

$handle = fopen('a.txt, 'r');
var_dump($handle);

如果文件存在于当前目录中,则由 output 显示成功 −

resource(5) of type (stream)

如果不显示,则会得到以下 error message

Warning: fopen(a.txt): Failed to open stream:
No such file or directory in a.php on line 2
bool(false)

Examples

以下示例显示了 fopen() 函数的不同用法 −

<?php
   $handle = fopen("hello.txt", "w");
   $handle = fopen("c:/xampp/htdocs/welcome.png", "rb");
   $handle = fopen("http://localhost/hello.txt", "r");
?>

请注意,当文件名是目录时,此函数也可能成功。在这种情况下,您可能需要使用 is_dir() 函数检查它是否是在执行任何读/写操作之前是一个文件。

一旦打开文件,就可以使用 fwrite()fputs() 等函数在其中写入数据,并使用 fread()fgets() 函数从中读取数据。

Closing a File

始终建议关闭句柄引用的打开流 −

fclose($handle);