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 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;
- }
- }
- }
- ?>