设为首页收藏本站language 语言切换
查看: 1838|回复: 0
收起左侧

PHP编程中八种常见的文件操作方式

[复制链接]
发表于 2010-2-24 13:40:42 | 显示全部楼层 |阅读模式
<>文件和目录的操作<BR><U><STRONG>HP</STRONG></U>处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题<BR>1.打开文件<BR>resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )<BR>$handle = fopen(filename,mode)//打开文件,返回代表此文件的资源的句柄<BR>文件名称可以使用相对路径或者绝对路径也可以使用网络协议模式,打开模式具有r\r+\w\w+\a\a+\x\x+\b<BR>在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。 <BR>为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。<BR>以下是几种打开文件的方式<BR>$fp = @fopen('log.txt',"rb");<BR>$fp = @fopen('../log.txt',"rb");<BR>$fp = @fopen("http://www.runer.com.cn/default.htm","rb");//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项<BR>////////////////////////////代码部分////////////////////////////////////////<BR>$filename1 = "userinfo.txt";//目录下或include_path中存在这个文件<BR>$filename2 = "test.txt";//目录下或include_path并不存在这个文件<BR>$resource1 = fopen($filename1,"rb");<BR>@$resource2 = fopen($filename2,"rb");//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息<BR>if($resource1)<BR>echo "打开文件{$filename1}成功";<BR>if(!@fopen($filename2,"r"))<BR>echo "打开文件{$filename2}不成功";<BR>//////////////////////////////////////////////////////////////////////////<BR>---------------------输出结果----------------------------------------<BR>打开文件userinfo.txt成功<BR><BR>---------------------------------------------------------------------<BR>2.使用完毕文件后,要显式的告诉PHP已经使用完文件,让操作系统确保将文件的所有内容正确地从缓冲区刷新到硬盘<BR>使用fclose()关闭文件,<BR>bool fclose ( resource handle )//关闭一个已打开的文件指针 <BR>3.读取文件,fopen函数的mode参数允许读取,PHP提供了几个函数从文件读取数据<BR>string fgets ( int handle [, int length] )从文件指针中读取一行,在二进制文件上尝试fgets会产生不可预测的结果<BR>如果不指定长度,默认读取1K数据,碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止<BR>string fgetss ( resource handle [, int length [, string allowable_tags]] )从文件指针中读取一行并过滤掉 <U><STRONG>HTML</STRONG></U> 标记<BR>fgetc()读取单个字符<BR>fread()读取任意二进制数据<BR>////////////////////////////代码部分////////////////////////////////////////<BR>$handle = fopen ("test.jpg", "rb");<BR>$c;<BR>while (!feof($handle)) {<BR>$contents .= @fread($handle, 8192);//循环读取并将其合并为一个大块文件<BR>}<BR>fclose($handle);<BR>//////////////////////////////////////////////////////////////////////////<BR>---------------------输出结果----------------------------------------<BR><BR>---------------------------------------------------------------------<BR>4.判断文件读取的状态<BR>每个文件句柄都有一个文件指针,或者一个指出下一个操作将在文件中哪里发生的游标,根据fopen函数的mode参数<BR>文件指针最初位于文件的开头(0),或者文件的末尾<BR>feof()可以判断文件是否已经到末尾(到末尾后函数返回TRUE)<BR>filesize()函数返回文件的大小 5.写入文件<BR>fwrite()函数执行文件写入<BR>////////////////////////////代码部分////////////////////////////////////////<BR>$filename = 'test.txt';<BR>$somec;<BR>// 首先我们要确定文件存在并且可写。<BR>if (is_writable($filename)) {<BR>// 在这个例子里,我们将使用添加模式打开$filename,<BR>// 因此,文件指针将会在文件的开头,<BR>// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。<BR>if (!$handle = fopen($filename, 'a')) {<BR>echo "不能打开文件 $filename";<BR>exit;<BR>}<BR>// 将$somecontent写入到我们打开的文件中。<BR>if (fwrite($handle, $somecontent) === FALSE) {<BR>echo "不能写入到文件 $filename";<BR>exit;<BR>}<BR>echo "成功地将 $somecontent 写入到文件$filename";<BR>fclose($handle);<BR>} else {<BR>}<BR>echo "文件 $filename 不可写";<BR>//////////////////////////////////////////////////////////////////////////<BR>---------------------输出结果----------------------------------------<BR>成功地将 添加这些文字到文件 写入到文件test.txt<BR>---------------------------------------------------------------------<BR>对于二进制数据,必须指定第三个参数,它包含写入到磁盘的数据字节数<BR>$result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));<BR>6.文件权限和其他信息<BR>is_readable()//判断文件是否可读<BR>is_writeable()//判断文件是否可写<BR>is_writable()//判断文件是否可写<BR>fileperms()//判断文件的权限(UNIX风格的文件权限测试函数)<BR>file_exists()//是否存在这个文件<BR>fileowner()//判断文件所属用户<BR>filegroup()//判断文件所属组<BR>7.删除和重命名文件<BR>unlink()//删除文件<BR>rename()//重命名文件<BR>8.访问目录<BR>目录访问建议使用前向斜线"/",兼容windows和unix系统<BR>basename()//返回不包括路径信息的文件名<BR>dirname()//返回文件名的目录部分<BR>realpath()//接受相对路径,返回文件的绝对路径<BR>pathinfo()//提取给定路径的目录名,基本文件名和扩展名<BR>opendir()//打开目录,返回资源句柄<BR>readdir()//读取目录项<BR>rewinddir()//将读取指针返回开头<BR>closedir()//关闭读取句柄<BR>chdir()//改变当前脚本执行期间的当前工作目录<BR>mkdir()//创建目录<BR>rmdir()删除目录<BR>////////////////////////////代码部分////////////////////////////////////////<BR>//////////////////////////////////////////////////////////////////////////<BR>---------------------输出结果----------------------------------------<BR><BR>filename: web : filetype: dir<BR><BR>filename: study : filetype: dir<BR></P>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 20:52 , Processed in 0.057727 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表