PHP 文件及目录操作总结

baixueshi 贡献于2012-05-15

作者 USER  创建于2010-04-06 10:42:00   修改者USER  修改于2010-04-06 10:47:00字数6481

文档摘要:在任何计算机设备中,文件是都是必须的对象,而在web编程中,文件的操作一直是web程序员的头疼的地方,而文件的操作在cms系统中这是必须的,非常有用的,我们经常遇到生成文件目录,文件(夹)编辑等操作.
关键词:

 PHP文件及目录操作总结 在任何计算机设备中,文件是都是必须的对象,而在web编程中,文件的操作一直是web程序员的头疼的地方,而文件的操作在cms系统中这是必须的,非常有用的,我们经常遇到生成文件目录,文件(夹)编辑等操作 一.        文件及目录操作的重要性 大型语言不可或缺 二.        文件及目录操作的用途及优势 计数器,生成静态网页,数据库配置文件,xml配置文件,输出execl文件等,速度快的优势 三.        文件及目录操作的原理 封装成流 四.        常用文件及目录操作的函数介绍 常用目录操作函数介绍: 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 1. "        ; 5. while($flist=readdir($fso)){ 6. echo $flist."
"    ; 7. } 8. closedir($fso) 9. ?> 复制代码 这是讲返回文件目录下面的文件已经目录的程序(0文件将返回false). 有时候需要知道目录的信息,可以使用dirname($path)和basename($path),分别返回路径的目录部分和文件名名称部分,可用disk_free_space($path)返回看空间空余空间. 创建 命令: mkdir($path,0777) ,0777是权限码,在非window下可用umask()函数设置. rmdir($path) 将删除路径在$path的文件. 这是一个仿面向对象的类 文件的属性也非常重要,文件属性包括创建时间,最后修改时间,所有者,文件组,类型,大小等 常用文件操作函数介绍: fopen 打开文件函数    fopen (路径和文件名,打开方式);//R-只读 W-写入 A-读写 fread 读取文件内容    fread (打开的文件,结束位置);//字节为单位 filesize 读取文件大小,字节为计量单位    filesize (路径和文件名); fwrite 写入文件内容    fwrite (路径和文件名,写入的内容); fclose 关闭打开的文件    fclose (路径和文件名); unlink() 删除文件函数      unlink(路径和文件名) rmdir() 删除目录函数    rmdir(路径和目录名) file(文件名);   返回一个数组,每一个元素是文件中的一行. 读文件 首先是一个文件看能不能读取(权限问题),或者存在不,我们可以用is_readable函数获取信息.: 1. 复制代码 判断文件存在的函数还有file_exists(下面演示),但是这个显然无is_readable全面.,当一个文件存在的话可以用 1. 复制代码 但是file_get_contents函数在较低版本上不支持,可以先创建文件的一个句柄,然后用指针读取全部: 1.   $fso = fopen($cacheFile, 'r'); 2.         $data = fread($fso, filesize($cacheFile)); 3.         fclose($fso); 复制代码 还有一种方式,可以读取二进制的文件: $data = implode('', file($file)); 写文件 和读取文件的方式一样,先看看是不是能写: 1. 复制代码 能写了的话可以使用file_put_contents函数写入: 1. 复制代码 file_put_contents函数在php5中新引进的函数(不知道存在的话用function_exists函数先判断一下)低版本的php无法使用,可以使用如下方式: 1. $f = fopen($file, 'w'); 2. fwrite($f, $data); 3. fclose($f); 复制代码 替换之. 写文件的时候有时候需要锁定,然后写: 1. function cache_page($pageurl,$pagedata){ 2.     if(!$fso=fopen($pageurl,'w')){ 3.         $this->warns('无法打开缓存文件.');//trigger_error 4.         return false; 5.     } 6.     if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定 7.         $this->warns('无法锁定缓存文件.');//trigger_error 8.         return false; 9.     } 10.     if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式 11.         $this->warns('无法写入缓存文件.');//trigger_error 12.         return false; 13.     } 14.     flock($fso,LOCK_UN);//释放锁定 15.     fclose($fso); 16.     return true; 17. } 复制代码 复制,删除文件 php删除文件非常easy,用unlink函数简单操作: 1. 复制代码 即可. 复制文件也很容易: 1. 复制代码 可以使用rename()函数重命名一个文件夹.其他操作都是这几个函数组合一下就能实现的. 获取文件属性 我说几个常见的函数: 获取最近修改时间: 1. 复制代码 返回的说unix的时间戳,这在缓存技术常用. 相关的还有获取上次被访问的时间fileatime(),filectime()当文件的权限,所有者,所有组或其它 inode 中的元数据被更新时间,fileowner()函数返回文件所有者 $owner = posix_getpwuid(fileowner($file)); (非window系统),ileperms()获取文件的权限, 1. 复制代码 filesize()返回文件大小的字节数: 1. 复制代码 获取文件的全部信息有个返回数组的函数stat()函数: 1. 复制代码 问:如何新建一个文件? 答:1、使用fopen("要建立的文件名","参数"),参数可选 w,w+,a,a+ 2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个linux命令来建立 问:为什么我无法建立文件? 答:1、如果你使用了fopen建立文件,是否正确的使用了参数 2、系统权限问题,请询问你的WEBMASTER你的FTP目录是否有写的权限 3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限, 如果没有请修改权限后尝试 问:如何将文件读入数组? 答:使用file 问:如何将文件全部读出? 答:1、使用fread($fp); 2、如果你的PHP版本>= 4.3.0的话可以使用file_get_contents(); 问:如何判断文件是否存在? 答:使用file_exists();为什么不使用fopen()来判断呢?原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断 问:为什么当我读取一个WEB页面的时候出错? 答:1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面 2、确保你要读取的WEB页面可以访问 问:我如何才能获得文件的相关属性? 答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用 请参阅手册。 问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢? 答:可以的,使用fseek(); 问:我想在访问文件的时候不允许其他人也访问此文件,怎么办? 答:1、你可以采用其他方面程序限制用户接入文件操作的页面 2、使用flock();详细的参数以及使用方法请参阅手册 问:如何删除文件内第一行,或指定一行数据? 答:PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.datw 文件中数据不止三行) 1. 复制代码 以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~ 问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!! 答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号 或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示 一个不推荐的方法就是去修改php.ini(ISP除外) 问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据? 答:建议ISP修改php.ini中的open_basedir进行限制, 不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。 问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除?? 答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!! 这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候 记得chmod文件权限,建议为777 问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊! 答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。 问:如何更改文件名? 答:rename(); 问:如何删除文件? 答:unlink(); exec("del(rm -vf) filename");注:rm -vf为linux下使用 问:如何清空文件? 答:使用fopen(filename,"w");或exec("echo '' > filename"); 问:如何编辑文件内容? 答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。 希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了 文件及目录操作的程序例子 1.计数器  <?php   /*以只读方式打开计数器文件counter.txt,并将它读到变理$num*/   $fp=fopen("counter.txt","r");   $num=fgets($fp,5);   fclose($fp);   /*变量的值加1并将新值存入计数器文件*/   $num++;   $fp=fopen("counter.txt","w");   fputs($fp,$num);   fclose($fp); ?> 2.遍历目录 1.        '.' && $file <> '..' && is_dir($bdir))//如果不是.和 ..并且$bdir是个目录 9.                {             10.           view_dir( $directory .'/'. $file);//再次调用view_dir方法 11.                }          12.          else if( $file <> '.' && $file <> '..') //否则输出文件名并换行 13.                {             14.           echo $directory .'/'. $file . '
'; 15.                }      16.          } 17.            closedir( $handle );//关闭目录 18.        } 19.        view_dir($dir);//调用view_dir方法 使程序执行 20.        ?> 3.生成execl文件 1. 复制代码

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档