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:Filedoesnotexist.";
}
?>测试看看‹/›
提示:对文件和目录的操作容易出错。因此,实现某种形式的错误检查是一个好习惯,这样,如果发生错误,您的脚本将可以优雅地处理错误。请参考有关PHP错误处理的教程。
使用PHP fclose()函数关闭文件
使用完文件后,需要将其关闭。fclose()函数用于关闭文件,如以下示例所示:
示例<?php
$file="data.txt";
//检查文件是否存在
if(file_exists($file)){
//打开要读取的文件
$handle=fopen($file,"r")ordie("ERROR:Cannotopenthefile.");
/*这里是一些要执行的代码*/
//正在关闭文件句柄
fclose($handle);
}else{
echo"ERROR:Filedoesnotexist.";
}
?>测试看看‹/›
注意:虽然PHP会在脚本终止时自动关闭所有打开的文件,但最好在执行所有操作后关闭文件。
使用PHP fread()函数从文件读取
现在您已经了解了如何打开和关闭文件。 在下一节中,您将学习如何从文件中读取数据。 PHP有几个用于从文件读取数据的函数。 您可以使用单个操作从一个字符读取整个文件。
读取固定数量的字符
fread()函数可用于从文件中读取指定数量的字符。可以使用此函数的基本语法。
fread(filehandle,lengthinbytes)
此函数接受两个参数-文件句柄和要读取的字节数。 下面的示例从“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")ordie("ERROR:Cannotopenthefile.");
//从文件中读取固定的字节数
$content=fread($handle,"20");
//关闭文件的句柄
fclose($handle);
//显示文件内容
echo$content;
}else{
echo"ERROR:Filedoesnotexist.";
}
?>测试看看‹/›
上面的示例将产生以下输出:
Thequickbrownfox
读取文件的全部内容
fread()函数可以与filesize()函数结合使用,一次读取整个文件。filesize()函数的作用是:以字节为单位返回文件的大小。
示例<?php
$file="data.txt";
//检查文件是否存在
if(file_exists($file)){
//打开要读取的文件
$handle=fopen($file,"r")ordie("ERROR:Cannotopenthefile.");
//正在读取整个文件
$content=fread($handle,filesize($file));
//正在关闭文件句柄
fclose($handle);
//显示文件内容
echo$content;
}else{
echo"ERROR:Filedoesnotexist.";
}
?>测试看看‹/›
上面的示例将产生以下输出:Thequickbrownfoxjumpsoverthelazydog.
在PHP中读取文件全部内容的最简单方法是使用readfile()函数。此函数允许您在不需要打开文件的情况下读取文件的内容。以下示例将生成与上述示例相同的输出:
示例<?php
$file="data.txt";
//检查文件是否存在
if(file_exists($file)){
//读取并输出整个文件
readfile($file)ordie("ERROR:Cannotopenthefile.");
}else{
echo"ERROR:Filedoesnotexist.";
}
?>测试看看‹/›
上面的示例将产生以下输出:Thequickbrownfoxjumpsoverthelazydog.
另一种无需打开即可读取文件全部内容的方法是使用file_get_contents()函数。此函数接受文件的名称和路径,并将整个文件读入字符串变量。下面是一个实例:
示例<?php
$file="data.txt";
//检查文件是否存在
if(file_exists($file)){
//将整个文件读入字符串
$content=file_get_contents($file)ordie("ERROR:Cannotopenthefile.");
//显示文件内容
echo$content;
}else{
echo"ERROR:Filedoesnotexist.";
}
?>测试看看‹/›
从文件读取全部数据的另一种方法是PHP的file()函数。 它的功能与file_get_content()函数类似,但它将文件内容作为行数组返回,而不是以单个字符串的形式返回。 返回的数组的每个元素对应于文件中的一行。
要处理文件数据,您需要使用foreach循环遍历数组。这是一个示例,该示例将文件读入数组,然后使用循环显示它:
示例<?php
$file="data.txt";
//检查文件是否存在
if(file_exists($file)){
//将整个文件读入数组
$arr=file($file)ordie("ERROR:Cannotopenthefile.");
foreach($arras$line){
echo$line;
}
}else{
echo"ERROR:Filedoesnotexist.";
}
?>测试看看‹/›
使用PHP fwrite() 函数写入文件
同样,您可以使用PHP fwrite()函数将数据写入文件或追加到现有文件。该函数的基本语法可以通过以下方式给出:
fwrite(filehandle,string)
fwrite()函数接受两个参数—文件句柄和要写入的数据字符串,如以下示例所示:<?php
$file="note.txt";
//要写入的数据字符串
$data="Thequickbrownfoxjumpsoverthelazydog.";
//打开文件进行写入
$handle=fopen($file,"w")ordie("ERROR:Cannotopenthefile.");
//将数据写入文件
fwrite($handle,$data)ordie("ERROR:Cannotwritethefile.");
//关闭文件句柄
fclose($handle);
echo"数据已成功写入文件。";
?>
在上面的示例中,如果“ note.txt”文件不存在,PHP将自动创建该文件并写入数据。但是,如果“ note.txt”文件已经存在,PHP将在写入新数据之前擦除此文件的内容(如果有的话),但是,如果您只想追加文件并保留现有内容,上面的示例请使用模式 a而不是w。
另一种方法是使用file_put_contents()函数。它是file_get_contents()函数的对应功能,提供了一种无需打开即可将数据写入文件的简便方法。该函数接受文件的名称和路径以及要写入文件的数据。这是一个实例:<?php
$file="note.txt";
//要写入的数据字符串
$data="Thequickbrownfoxjumpsoverthelazydog.";
//将数据写入文件
file_put_contents($file,$data)ordie("ERROR:Cannotwritethefile.");
echo"数据已成功写入文件。";
?>
如果file_put_contents()函数中指定的文件已经存在,则默认情况下PHP将覆盖它。如果要保留文件的内容,可以将特殊FILE_APPEND标志作为第三个参数传递给file_put_contents()函数。它将简单地将新数据追加到文件中,而不是覆盖它。这是一个实例:<?php
$file="note.txt";
//要写入的数据字符串
$data="Thequickbrownfoxjumpsoverthelazydog.";
//将数据写入文件
file_put_contents($file,$data,FILE_APPEND)ordie("ERROR:Cannotwritethefile.");
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 文件(File)》对你有帮助,请点赞、收藏,并留下你的观点哦!