加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP 文件(File)

发布时间:2023-01-08 11:31:32 所属栏目:PHP教程 来源:未知
导读: PHP 魔术常量php include 和 require
PHP 文件(File)
在本教程中,您将学习如何使用PHP的文件系统函数动态创建,访问(或读取)和操纵文件。
使用PHP处理文件
由于PHP是服务器端编程语言

PHP 魔术常量php include 和 require

PHP 文件(File)

在本教程中,您将学习如何使用PHP的文件系统函数动态创建,访问(或读取)和操纵文件。

使用PHP处理文件

由于PHP是服务器端编程语言,因此它使您可以使用Web服务器上存储的文件和目录。在本教程中,您将学习如何使用PHP文件系统函数在Web服务器上创建,访问和操作文件。

用PHP fopen() 函数打开文件

要使用文件,首先需要打开文件。PHP fopen()函数用于打开文件。该函数的基本语法可以通过以下方式给出:

fopen(filename,?mode)

传递给fopen()的第一个参数指定要打开的文件的名称,第二个参数指定应以哪种模式打开文件。 例如:

<?php
$handle?=?fopen("data.txt",?"r");
?>

测试看看?/?

可以通过以下方式之一打开文件:

模式它能做什么

r

打开文件只读。

r+

打开文件进行读写。

w

打开仅用于写入的文件,并清除文件内容。如果该文件不存在,PHP将尝试创建它。

w+

打开文件进行读写,并清除文件内容。如果该文件不存在,PHP将尝试创建它。

a

追加。打开仅用于写入的文件。通过写入文件末尾来保留文件内容。如果该文件不存在,PHP将尝试创建它。

a+

读取/追加。打开文件进行读写。通过写入文件末尾来保留文件内容。如果该文件不存在,PHP将尝试创建它。

x

打开仅用于写入的文件。 如果文件已存在,则返回False并生成错误。 如果该文件不存在,PHP将尝试创建它。

x+

打开文件进行读写;否则,其行为与“ x”相同。

如果您试图打开一个不存在的文件,PHP将生成一条警告消息。因此,为了避免这些错误消息,在尝试访问某个文件或目录之前,应该使用PHP file_exists()函数实现一个简单的检查,检查文件或目录是否存在。

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//?尝试打开该文件
????$handle?=?fopen($file,?"r");
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

提示:对文件和目录的操作容易出错。因此,实现某种形式的错误检查是一个好习惯,这样php文件,如果发生错误,您的脚本将可以优雅地处理错误。请参考有关PHP错误处理的教程。

使用PHP fclose()函数关闭文件

使用完文件后,需要将其关闭。fclose()函数用于关闭文件,如以下示例所示:

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//打开要读取的文件
????$handle?=?fopen($file,?"r")?or?die("ERROR:?Cannot?open?the?file.");
????????
????/*?这里是一些要执行的代码?*/
????????
????//正在关闭文件句柄
????fclose($handle);
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

注意:虽然PHP会在脚本终止时自动关闭所有打开的文件,但最好在执行所有操作后关闭文件。

使用PHP fread()函数从文件读取

现在您已经了解了如何打开和关闭文件。 在下一节中,您将学习如何从文件中读取数据。 PHP有几个用于从文件读取数据的函数。 您可以使用单个操作从一个字符读取整个文件。

读取固定数量的字符

fread()函数可用于从文件中读取指定数量的字符。可以使用此函数的基本语法。

fread(file?handle,?length?in?bytes)

此函数接受两个参数-文件句柄和要读取的字节数。 下面的示例从“data.txt”文件读取20个字节,包括空格。 假设文件“data.txt”包含一段文本“The quick brown fox jumps over the lazy dog.”。

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//打开要读取的文件
????$handle?=?fopen($file,?"r")?or?die("ERROR:?Cannot?open?the?file.");
????????
????//从文件中读取固定的字节数
????$content?=?fread($handle,?"20");
????????
????//关闭文件的句柄
????fclose($handle);
????????
????//显示文件内容
????echo?$content;
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

上面的示例将产生以下输出:

The?quick?brown?fox

读取文件的全部内容

fread()函数可以与filesize()函数结合使用,一次读取整个文件。filesize()函数的作用是:以字节为单位返回文件的大小。

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//打开要读取的文件
????$handle?=?fopen($file,?"r")?or?die("ERROR:?Cannot?open?the?file.");
????????
????//正在读取整个文件
????$content?=?fread($handle,?filesize($file));
????????
????//正在关闭文件句柄
????fclose($handle);
????????
????//显示文件内容
????echo?$content;
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

上面的示例将产生以下输出:

The?quick?brown?fox?jumps?over?the?lazy?dog.

在PHP中读取文件全部内容的最简单方法是使用readfile()函数。此函数允许您在不需要打开文件的情况下读取文件的内容。以下示例将生成与上述示例相同的输出:

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//读取并输出整个文件
????readfile($file)?or?die("ERROR:?Cannot?open?the?file.");
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

上面的示例将产生以下输出:

The?quick?brown?fox?jumps?over?the?lazy?dog.

另一种无需打开即可读取文件全部内容的方法是使用file_get_contents()函数。此函数接受文件的名称和路径,并将整个文件读入字符串变量。下面是一个实例:

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//?将整个文件读入字符串
????$content?=?file_get_contents($file)?or?die("ERROR:?Cannot?open?the?file.");
????????
????//显示文件内容
????echo?$content;
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

从文件读取全部数据的另一种方法是PHP的file()函数。 它的功能与file_get_content()函数类似,但它将文件内容作为行数组返回,而不是以单个字符串的形式返回。 返回的数组的每个元素对应于文件中的一行。

要处理文件数据,您需要使用遍历数组。这是一个示例,该示例将文件读入数组,然后使用循环显示它:

<?php
$file?=?"data.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//将整个文件读入数组
????$arr?=?file($file)?or?die("ERROR:?Cannot?open?the?file.");
????foreach($arr?as?$line){
????????echo?$line;
????}
}?else{
????echo?"ERROR:?File?does?not?exist.";
}
?>

测试看看?/?

使用PHP fwrite() 函数写入文件

同样,您可以使用PHP fwrite()函数将数据写入文件或追加到现有文件。该函数的基本语法可以通过以下方式给出:

fwrite(file?handle,?string)

fwrite()函数接受两个参数—文件句柄和要写入的数据字符串,如以下示例所示:

<?php
$file?=?"note.txt";
????
//要写入的数据字符串
$data?=?"The?quick?brown?fox?jumps?over?the?lazy?dog.";
????
//打开文件进行写入
$handle?=?fopen($file,?"w")?or?die("ERROR:?Cannot?open?the?file.");
????
//将数据写入文件
fwrite($handle,?$data)?or?die?("ERROR:?Cannot?write?the?file.");
????
//关闭文件句柄
fclose($handle);
????
echo?"数据已成功写入文件。";
?>

在上面的示例中,如果“ note.txt”文件不存在,PHP将自动创建该文件并写入数据。但是,如果“ note.txt”文件已经存在,PHP将在写入新数据之前擦除此文件的内容(如果有的话),但是,如果您只想追加文件并保留现有内容,上面的示例请使用 a而不是w。

另一种方法是使用file_put_contents()函数。它是file_get_contents()函数的对应功能,提供了一种无需打开即可将数据写入文件的简便方法。该函数接受文件的名称和路径以及要写入文件的数据。这是一个实例:

<?php
$file?=?"note.txt";
????
//要写入的数据字符串
$data?=?"The?quick?brown?fox?jumps?over?the?lazy?dog.";
????
//将数据写入文件
file_put_contents($file,?$data)?or?die("ERROR:?Cannot?write?the?file.");
????
echo?"数据已成功写入文件。";
?>

如果file_put_contents()函数中指定的文件已经存在,则默认情况下PHP将覆盖它。如果要保留文件的内容,可以将特殊FILE_APPEND标志作为第三个参数传递给file_put_contents()函数。它将简单地将新数据追加到文件中,而不是覆盖它。这是一个实例:

<?php
$file?=?"note.txt";
????
//要写入的数据字符串
$data?=?"The?quick?brown?fox?jumps?over?the?lazy?dog.";
????
//将数据写入文件
file_put_contents($file,?$data,?FILE_APPEND)?or?die("ERROR:?Cannot?write?the?file.");
????
echo?"数据已成功写入文件。";
?>

用PHP rename()函数重命名文件

您可以使用PHP的rename()函数重命名文件或目录,如下所示:

<?php
$file?=?"file.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//尝试重命名文件
????if(rename($file,?"newfile.txt")){
????????echo?"文件重命名成功。";
????}?else{
????????echo?"错误:无法重命名文件。";
????}
}?else{
????echo?"错误:文件不存在。";
}
?>

使用PHP unlink()函数删除文件

您可以使用PHP的unlink()函数删除文件或目录,如下所示:

<?php
$file?=?"note.txt";
?
//检查文件是否存在
if(file_exists($file)){
????//尝试删除该文件
????if(unlink($file)){
????????echo?"文件已成功删除。";
????}?else{
????????echo?"错误:无法删除文件。";
????}
}?else{
????echo?"错误:文件不存在。";
}
?>

在下一章中,我们将学习有关在PHP中解析目录或文件夹的更多信息。

PHP文件系统函数

下表概述了一些其他有用的PHP文件系统函数,这些函数可用于动态读取和写入文件。

函数

描述

fgetc()

一次读取一个字符。

fgets()

一次读取一行。

fgetcsv()

读取一行用逗号分隔的值。

filetype()

返回文件的类型。

feof()

检查是否已到达文件末尾。

is_file()

检查文件是否为常规文件。

is_dir()

检查文件是否为目录。

is_executable()

检查文件是否可执行。

realpath()

返回规范化的绝对路径名。

rmdir()

删除一个空目录。

请查看PHP文件系统参考,以获取其他有用的PHP文件系统函数。

PHP 魔术常量php include 和 require

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!