前言
php支持文件上传功能,因此学习php文件的相关操作是必须的,这篇笔记会去记录php文件系统的相关知识。
文件打开与关闭
文件处理包括读取、关闭、重写等,例如,访问一个文件需要3步:打开文件、读写文件和关闭文件。其他的操作要么是包含在读写文件中(如显示内容、写入内容等),要么与文件自身的属性有关系(如文件遍历、文件改名等)。
1、打开文件
在php中使用fopen()函数打开文件,fopen()函数的语法如下:
resource fopen ( string filename, string mode [, bool u_include_path]);filename是要打开的包含路径的文件名,可以是相对路径,也可以是绝对路径。如果没有任何前缀则表示打开的是本地文件。mode是打开文件的方式,可取的值如下表所示。u_include_path是可选的,该参数在配置文件php.ini中指定一个路径,如f:\apprv\ www\mess.php,如果希望服务器在这个路径下打开所指定的文件,可以设置为1或 true。
2、关闭文件
对文件的操作结束后应该关闭这个文件,否则可能引起错误。在php中使用fclo()函数关闭文件,该函数的语法如下:
bool fclo ( resource handle ) ;
该函数将参数handle指向的文件关闭,如果成功,返回true,否则返回fal。其中的文件指针必须是有效的,并且是通过fopen()函数成功打开的文件。例如:
<?php $f_open =fopen("../file.txt.","rb"); //打开文件 … //对文件进行操作 fclo($f_open) //操作完成后关闭文件 ?>
读写文件
1.从文件中读取数据
从文件中读取数据,可以读取一个字符、一行字串或整个文件,还可以读取任意长度的字串。
读取整个文件:readfile()、file()和file_get_contents()。
(1)readfile()函数
readfile()函数用于读入一个文件并将其写入到输出缓冲,如果出现错误则返回fal。函数语法 如下:
int readfile(string filename)
使用readfile()函数,不需要打开/关闭文件,不需要echo/print等输出语句,直接写出文件路径即可。
(2)file()函数
file()函数也可以读取整个文件的内容,只是file()函数将文件内容按行存放到数组中,包括换行符在内。如果失败则返回fal。函数语法如下:
array file(string filename)
(3)file_get_contents()函数
该函数将文件内容(filename)读入一个字符串。如果有offt和maxlen参数,将在参数offt所指定的位置开始读取长度为maxlen的内容。如果失败,返回fal。函数语法如下:
string file_get_contents(string filename[,int offt[,int maxlen]])
该函数适用于二进制对象,是将整个文件的内容读入到一个字符串中的首选方式。
示例:
使用readfile()函数、file()函数和file_get_contents()函数分别读取tm.txt的内容。
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-type" content="text/html; chart=utf-8" /><title>读取整个文件</title><style type="text/css"><!--body,td,th { font-size: 12px;}body { margin-left: 10px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px;}--></style></head><body><table border="1" cellspacing="0" cellpadding="0"> <tr> <td width="280" height="25" align="right" valign="middle" scope="col">使用readfile()函数读取文件内容:</td> <td height="25" align="center" valign="middle" scope="col"> <?php readfile('tm.txt'); ?> </td> </tr> <tr> <td height="25" align="right" valign="middle">使用file()函数读取文件内容:</td> <td height="25" align="center" valign="middle"> <?php $f_arr = file('tm.txt'); foreach($f_arr as $cont){ echo $cont."<br>"; } ?></td> </tr> <tr> <td width="280" height="25" align="right" valign="middle" scope="col">使用file_get_contents()函数读取文件内容:</td> <td height="25" align="center" valign="middle" scope="col"> <?php $f_chr = file_get_contents('tm.txt'); echo $f_chr; ?></td> </tr></table></body></html>
效果:
读取一行数据:fgets()和fgetss()
(1)fgets()函数
fgets()函数用于一次读取一行数据。函数语法如下:
string fgets( int handle [, int length] )handle是被打开的文件length是要读取的数据长度。
函数能够实现从handle指定文件中读取一行并返回长度最大值为
length-1个字节的字符串。在遇到换行符、eof或者读取了length-1个字节后停止。如果忽略length参数,那么读取数据直到行结束。
(2)fgetss()函数
fgetss()函数是fgets()函数的变体,用于读取一行数据,同时,
fgetss()函数会过滤掉被读取内容中的html和php标记。函数语法如下:
string fgetss ( resource handle [, int length [, string allowable_tags]] )
该函数能够从读取的文件中过滤掉任何html和php标记。可以使用
allowable_tags参数来控制哪些标记不被过滤掉。
示例:使用fgets()函数与fgetss()函数分别读取fun.php文件并显示出来。
fun.php:
<table width="200" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="20" align="center" valign="middle" scope="col"><font color='red'>i am red.</font></td> <td height="20" align="center" valign="middle" scope="col"><font color='green'>i am green.</font></td> </tr> <tr> <td height="20" align="center" valign="middle"><font color='black'>i am black.</font></td> 大叔宠我上瘾顾眠霍冷 <td height="20" align="center" valign="middle"><font color='pink'>i am pink. </font></td> </tr></table>
index.php:
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-type" content="text/html; chart=utf-8" /><title>fgets和fgetss的区别</title><style type="text/css"><!--body,td,th { font-size: 12px;}body { margin-left: 10px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px;}--></style></head><body><div align="left"></div><table border="1" cellspacing="0" cellpadding="0"> <tr> <td height="30" align="right" valign="middle" scope="col">使用fgets函数:</td> <td height="30" align="center" valign="middle" scope="col"><?php header("content-type:text/html;chart=utf-8"); $fopen = fopen('fun.php','rb'); while(!feof($fopen)){ echo fgets($fopen); } fclo($fopen);?> </td> </tr> <tr> <td height="30" align="right" valign="middle">使用fgetss函数:</td> <td height="30" align="center" valign="middle"> <?php $fopen = fopen('fun.php','rb'); while(!feof($fopen)){ echo fgetss($fopen); } fclo($fopen);?> </td> </tr></table></body></html>
效果:
读取一个字符:fgetc()
在对某一个字符进行查找、替换时,需要有针对性地对某个字符进行读取,在php中可以使用fgetc()函数实现此功能。函数语法如下:
string fgetc ( resource handle )
该函数返回一个字符,该字符从爸爸的新娘在对门handle指向的文件中得到。遇到eof则返回fal。
读取任意长度的字串:fread()
fread()可以从文件中读取指定长度的数据,函数语法如下:
string fread ( int handle, int length )
参数handle为指向的文件资源,length是要读取的字节数。当 函数读取length个字节或到达eof时停止执行。
2.将数据写入文件
写入数据也是php中常用的文件操作,在php中使用fwrite()和file_put_contents()函数向文件中写入数据。
fwrite()函数也称为fputs(),它们的用法相同。fwrite()函数的语法如下:
int fwrite ( resource handle, string string [, int length] )
该函数把内容string写入七夕风俗文件指针handle处。如果指定了长度length,则写入length个字节后停止。如果文件内容长度小于length,则会输出全部文件内容。
file_put_contents()函数是php 5新增的函数,其语法为:
int file_put_contents ( string filename, string data [, int flags])
filename为写入数据的文件。data为要写入的数据。flags可以是file_u_include_path、file_append或lock_ex,lock_ex为独占锁定。
使用file_put_contents()函数和依次调用fopen()、fwrite()、 fclo()函数的功能一样。
示例:使用fwrite函数向文件中写入数据,再使用 file_put_contents()函数写入数据。
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-type" content="text/html; chart=utf-8" /><title>使用fwrite和file_put_contents函数写入数据</title><style type="text/css"><!--body,td,th { font-size: 12px;}body { margin-left: 10px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px;}--></style></head><body><?phpheader("content-type:text/html;chart=utf-8"); $filepath = "05.txt"; $str = "此情可待成追忆 只是当时已惘然<br>"; echo "用fwrite函数写入文件:"; $fopen = fopen($filepath,'wb') or die('文件不存在'); f好看的灾难片排行榜write($fopen,$str); fclo($fopen); readfile($filepath); echo "<p>用file_put_contents函数写入文件:"; file_put_contents($filepath,$str); readfile($filepath);?></body></html>
效果:
除了可以对文件内容进行读写,对文件本身同样也可以进行操作,如复制、重命名、查看修改日期等。php内置了大量的文件操作函数。
- bool copy( string path1, string path2):将文件从path1复制到path2。如果成功,返回true,失败则返回fal。例如:copy('tm.txt','../tm.txt') - bool unlink( string filename )删除文件,成功返回true,失败则返回fal。例如:unlink(‘./tm.txt') - int fileatime( string filename )返回文件最后一次被访问的时间,时间以unix时间戳的方式返回。例如:fileatime('1.txt') - int filemtime( string filename )返回文件最后一次被修改的时间,时间以unix时间戳的方式返回。例如:date('y-m-dh:i:s',filemtime('1.txt')) - int filesize( string filename )取得文件filename的大(bytes)。例如:filesize('1.txt') - array pathinfo(string name [, int options])返回一个数组,包含文件name的路径信息。有dirname、baname和extension。可以通过option设置要返回的信息,有pathinfo_dirname、pathinfo_baname和pathinfo_extension。默认为返回全部。例如:$arr =pathinfo('/tm/sl/12/5/1.txt');foreach($arras$method=>$value{ echo$method.“:”.$value.“<br>”;} - string realpath ( string filename )返回文件fil近现代ename的绝对路径。如c:\tmp\….txtrealpath('1.txt') - array stat ( string filename )返回一个数组,包括文件的相关信息,如上面提到的文件大小、最后修改时间等 $arr = stat('1.txt'); foreach($arr as $method => $value){ echo $method.": ".$value."<br>"; }
到此这篇关于php文件打开关闭及读写操作示例解析的文章就介绍到这了,更多相关php文件打开关闭及读写内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-08 21:32:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/26b48aa0b298e32d2f4fb6e4351b6f50.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP文件打开关闭及读写操作示例解析.doc
本文 PDF 下载地址:PHP文件打开关闭及读写操作示例解析.pdf
留言与评论(共有 0 条评论) |