php文件操作类,建立,写入,删除,修改,复制,移动,创建目录
php文件操作类,本文件操作类可实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录.大家可参考参考.
实例1,代码如下:
<?php /* 文件名:ClassFile.php 功能:面向对象,文件操作类(查看文件,删除文件,上传文件) 作者:感染源 时间:2007-1-11 */ class ClassFile { private $dir_name ; private $file_name ; private $dh ; //private $file_path; //构造函数,打开工作文件目录 function __construct( $PDirName ) { $this ->dir_name = $PDirName ; if ( is_dir ( $this ->dir_name)) //打开目录 if ( $this ->dh = opendir( $this ->dir_name) or dir( '路径错误,请重新检查路径!' )); } //function __construct(); //关闭文件目录 function __destruct() { //关闭目录 closedir ( $this ->dh); } //function __destruct(); //向当前文件夹添加文件,同时检查是否有重名的文件 function AddFile( $temp_file ) { //读取目录 while ( $this ->file_name = readdir( $this ->dh)) { if ( $this ->file_name== $temp_file ) //检查是否和已存在的文件重名 { echo '文件重名,请更改文件名...' ; exit ; } else { //将临时文件复制到当前目录中 $up_id = copy ( $temp_file , "$this->dir_name/$temp_file" ); if (! $up_id ) { echo '文件上传失败,请重新再传...' ; exit ; } else { unlink( $temp_file ); //删除临时文件 echo "<script language='javascript'>" ; echo "alert(" 文件上传成功! ");" ; echo "</script>" ; } //if } //if } //while } //function AddFile(); //删除文件 function DelFile( $del_file ) { if ( is_file ( $del_file )) { //$path = "$this->dir_name/$del_file"; if (unlink( $del_file )) { echo "<script language='javascript'>" ; echo "alert('成功删除文件!');" ; echo "</script>" ; } } //if } //function DelFile(); //读取文件 function Read_File() { $result_file = array (); $i = 0; while ( $this ->file_name = readdir( $this ->dh)) { if ( $this ->file_name== '.' || $this ->file_name== '..' ) {} else { $result_file [ $i ++] = "$this->dir_name/$this->file_name" ; } //if } //while return $result_file ; //返回文件名数组 } //function Read_File() } //Class ClassFile ?>实例2,代码如下:
<?php /** *本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录 * 列出目录里的文件等功能,路径后面别忘了加"/" * * @author 路人郝 * @copyright myself * */ class fileoperate { var path; // 文件路径 var name; //文件名 var result; //对文件操作后的结果 /** * 本方法用来在path目录下创建name文件 * * @param string path * @param string name */ function creat_file(path,name) //建立文件 { filename=path.name; if ( file_exists (filename)) { echo "文件已经存在,请换个文件名" ; } else { if ( file_exists (path)) { touch(name); rename(name,filename); echo "文件建立成功 </br>" ; } else { echo "目录不存在,请检查" ; } } } /** * 本方法用来写文件,向path路径下name文件写入content内容,bool为写入选项,值为1时 * 接着文件原内容下继续写入,值为2时写入后的文件只有本次content内容 * * @param string_type path * @param string_type name * @param string_type content * @param bool_type bool */ function write_file(path,name,content,bool) //写文件 { filename=path.name; if (bool==1) { if ( is_writable (filename)) { handle= fopen (filename, 'a' ); if (!handle) { echo "文件不能打开或文件不存在" ; exit ; } result=fwrite(handle,content); if (!result) { echo "文件写入失败" ; } echo "文件写入成功" ; fclose(handle); } else echo "文件不存在" ; } if (bool==2) { if (! file_exists (filename)) { this->creat_file(path,name); handle= fopen (filename, 'a' ); if (fwrite(handle,content)); echo "文件写入成功" ; } else { unlink(filename); this->creat_file(path,name); this->write_file(path,name,content,1); echo "文件修改成功" ; } } } /** * 本方法删除path路径下name文件 * * @param string_type path * @param string_type name */ function del_file(path,name){ //删除文件 filename=path.name; if (! file_exists (filename)) { echo "文件不存在,请确认路径是否正确" ; } else { if (unlink(filename)){ echo "文件删除成功" ; } else echo "文件删除失败" ; } } /** * 本方法用来修改path目录里name文件中的内容(可视) * * @param string_type path * @param string_type name */ function modi_file(path,name){ //文件修改 filename=path.name; handle= fopen (filename, 'r+' ); content= file_get_contents (filename); echo "<form id='form1' name='form1' action='modi_file.php' method='post'>" ; echo "<textarea name=content rows='10'>content</textarea>文件内容" ; echo "<p>" ; echo "<input type='text' name='filename' value=filename />文件路径<p>" ; echo "<input name=ss type=submit value=修改文件内容 />" ; echo "</form>" ; } /** * 本方法用来复制name文件从spath到dpath * * @param string name * @param string spath * @param string dpath */ function copy_file(name,spath,dpath) //文件复制 { filename=spath.name; if ( file_exists (filename)) { handle= fopen (filename, 'a' ); copy (filename,dpath.name); if ( file_exists (dpath.name)) echo "文件复制成功" ; else echo "文件复制失败" ; } else echo "文件不存在" ; } /** * 本方法把name文件从spath移动到path路径 * * @param string_type path * @param string_type dirname * @param string_type dpath */ function move_file(name,spath,dpath) //移动文件 { filename=spath.name; if ( file_exists (filename)) { result=rename(filename,dpath.name); if (result==false or ! file_exists (dpath)) echo "文件移动失败或目的目录不存在" ; else echo "文件移动成功" ; } else { echo "文件不存在,无法移动" ; } } } ?>实例3,代码如下:
这个比较高级了,不但可以实现文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,还可以实现移动目录,copy,替换等操作,代码如下:
<?php class FSC{ // 函数名: getfilesource // 功能: 得到指定文件的内容 // 参数: $file 目标文件 // test passed function getfilesource( $file ){ if ( $fp = fopen ( $file , 'r' )){ $filesource = fread ( $fp , filesize ( $file )); fclose( $fp ); return $filesource ; } else return false; } // 函数名: writefile // 功能: 创建新文件,并写入内容,如果指定文件名已存在,那将直接覆盖 // 参数: $file -- 新文件名 // $source 文件内容 //test passed function writefile( $file , $source ){ if ( $fp = fopen ( $file , 'w' )){ $filesource =fwrite( $fp , $source ); fclose( $fp ); return $filesource ; } else return false; } // 函数名: movefile // 功能: 移动文件 // 参数: $file -- 待移动的文件名 // $destfile -- 目标文件名 // $overwrite 如果目标文件存在,是否覆盖.默认是覆盖. // $bak 是否保留原文件 默认是不保留即删除原文件 // test passed function movefile( $file , $destfile , $overwrite =1, $bak =0){ if ( file_exists ( $destfile )){ if ( $overwrite ) unlink( $destfile ); else return false; } if ( $cf = copy ( $file , $destfile )){ if (! $bak ) return (unlink( $file )); } return ( $cf ); } // 函数名: movedir // 功能: 这是下一涵数move的附助函数,功能就是移动目录 function movedir( $dir , $destdir , $overwrite =1, $bak =0){ @set_time_limit(600); if (! file_exists ( $destdir )) FSC::notfate_any_mkdir( $destdir ); if ( file_exists ( $dir )&&( is_dir ( $dir ))) { if ( substr ( $dir ,-1)!= '/' ) $dir .= '/' ; if ( file_exists ( $destdir )&&( is_dir ( $destdir ))){ if ( substr ( $destdir ,-1)!= '/' ) $destdir .= '/' ; $h =opendir( $dir ); while ( $file =readdir( $h )){ if ( $file == '.' || $file == '..' ) { continue ; $file = "" ; } if ( is_dir ( $dir . $file )){ if (! file_exists ( $destdir . $file )) FSC::notfate_mkdir( $destdir . $file ); else chmod ( $destdir . $file ,0777); FSC::movedir( $dir . $file , $destdir . $file , $overwrite , $bak ); FSC::delforder( $dir . $file ); } else { if ( file_exists ( $destdir . $file )){ if ( $overwrite )unlink( $destdir . $file ); else { continue ; $file = "" ; } } if ( copy ( $dir . $file , $destdir . $file )) if (! $bak ) if ( file_exists ( $dir . $file )&& is_file ( $dir . $file )) @unlink( $dir . $file ); } } } else return false; } else return false; } // 函数名: move // 功能: 移动文件或目录 // 参数: $file -- 源文件/目录 // $path -- 目标路径 // $overwrite -- 如是目标路径中已存在该文件时,是否覆盖移动 // -- 默认值是1, 即覆盖 // $bak -- 是否保留备份(原文件/目录) function move( $file , $path , $overwrite =1, $bak =0) { if ( file_exists ( $file )){ if ( is_dir ( $file )){ if ( substr ( $file ,-1)== '/' ) $dirname = basename ( substr ( $file ,0, strlen ( $file )-1)); else $dirname = basename ( $file ); if ( substr ( $path ,-1)!= '/' ) $path .= '/' ; if ( $file != '.' || $file != '..' || $file != '' || $file != './' ) $path .= $dirname ; FSC::movedir( $file , $path , $overwrite , $bak ); if (! $bak )FSC::delforder( $file ); } else { if ( file_exists ( $path )){ if ( is_dir ( $path )) chmod ( $path ,0777); else { if ( $overwrite ) @unlink( $path ); else return false; } } else FSC::notfate_any_mkdir( $path ); if ( substr ( $path ,-1)!= '/' ) $path .= '/' ; FSC::movefile( $file , $path . basename ( $file ), $overwrite , $bak ); } } else return false; } // 函数名: delforder // 功能: 删除目录,不管该目录下是否有文件或子目录,全部删除哦,小心别删错了哦! // 参数: $file -- 源文件/目录 //test passed function delforder( $file ) { chmod ( $file ,0777); if ( is_dir ( $file )) { $handle = opendir( $file ); while ( $filename = readdir( $handle )) { if ( $filename != "." && $filename != ".." ) { FSC::delforder( $file . "/" . $filename ); } } closedir ( $handle ); return ( rmdir ( $file )); } else { unlink( $file ); } } // 函数名: notfate_mkdir // 功能: 创建新目录,这是来自php.net的一段代码.弥补mkdir的不足. // 参数: $dir -- 目录名 function notfate_mkdir( $dir , $mode =0777){ $u =umask(0); $r = mkdir ( $dir , $mode ); umask( $u ); return $r ; } // 函数名: notfate_any_mkdir // 功能: 创建新目录,与上面的notfate_mkdir有点不同,因为它多了一个any,即可以创建多级目录 // 如:notfate_any_mkdir("abc/abc/abc/abc/abc") // 参数: $dirs -- 目录名 function notfate_any_mkdir( $dirs , $mode =0777) { if (! strrpos ( $dirs , '/' )) { return (FSC::notfate_mkdir( $dirs , $mode )); } else { $forder = explode ( '/' , $dirs ); $f = '' ; for ( $n =0; $n < count ( $forder ); $n ++) { if ( $forder [ $n ]== '' ) continue ; $f .=((( $n ==0)&&( $forder [ $n ]<> '' ))?( '' ):( '/' )). $forder [ $n ]; if ( file_exists ( $f )){ chmod ( $f ,0777); continue ; } else { if (FSC::notfate_mkdir( $f , $mode )) continue ; else return false; } } return true; } } } ?>查看更多关于php文件操作类,建立,写入,删除,修改,复制,移动,创的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29542