PHP 文件(File)
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 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |