php文件操作类,建立,写入,删除,修改,复制,移动,创建目录

php文件操作类,本文件操作类可实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录.大家可参考参考.

实例1,代码如下:

  1. <?php
  2. /*
  3. 文件名:ClassFile.php
  4. 功能:面向对象,文件操作类(查看文件,删除文件,上传文件)
  5. 作者:感染源
  6. 时间:2007-1-11
  7. */
  8. class ClassFile
  9. {
  10. private $dir_name;
  11. private $file_name;
  12. private $dh;
  13. //private $file_path;
  14. //构造函数,打开工作文件目录
  15. function __construct($PDirName)
  16. {
  17. $this->dir_name = $PDirName;
  18. if(is_dir($this->dir_name))
  19. //打开目录
  20. if($this->dh = opendir($this->dir_name) or dir('路径错误,请重新检查路径!'));
  21. }//function __construct();
  22. //关闭文件目录
  23. function __destruct()
  24. {
  25. //关闭目录
  26. closedir($this->dh);
  27. }//function __destruct();
  28. //向当前文件夹添加文件,同时检查是否有重名的文件
  29. function AddFile($temp_file)
  30. {
  31. //读取目录
  32. while($this->file_name = readdir($this->dh))
  33. {
  34. if($this->file_name==$temp_file) //检查是否和已存在的文件重名
  35. {
  36. echo '文件重名,请更改文件名...';
  37. exit;
  38. }
  39. else
  40. {
  41. //将临时文件复制到当前目录中
  42. $up_id = copy($temp_file,"$this->dir_name/$temp_file");
  43. if(!$up_id)
  44. {
  45. echo '文件上传失败,请重新再传...';
  46. exit;
  47. }
  48. else
  49. {
  50. unlink($temp_file); //删除临时文件
  51. echo "<script language='javascript'>";
  52. echo "alert("文件上传成功!");";
  53. echo "</script>";
  54. }//if
  55. }//if
  56. }//while
  57. }//function AddFile();
  58. //删除文件
  59. function DelFile($del_file)
  60. {
  61. if(is_file($del_file))
  62. {
  63. //$path = "$this->dir_name/$del_file";
  64. if(unlink($del_file))
  65. {
  66. echo "<script language='javascript'>";
  67. echo "alert('成功删除文件!');";
  68. echo "</script>";
  69. }
  70. }//if
  71. }//function DelFile();
  72. //读取文件
  73. function Read_File()
  74. {
  75. $result_file = array();
  76. $i = 0;
  77. while($this->file_name = readdir($this->dh))
  78. {
  79. if($this->file_name=='.'||$this->file_name=='..')
  80. {}
  81. else
  82. {
  83. $result_file[$i++] = "$this->dir_name/$this->file_name";
  84. }//if
  85. }//while
  86. return $result_file; //返回文件名数组
  87. }//function Read_File()
  88. }//Class ClassFile
  89. ?>

实例2,代码如下:

  1. <?php
  2. /**
  3. *本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录
  4. * 列出目录里的文件等功能,路径后面别忘了加"/"
  5. *
  6. * @author 路人郝
  7. * @copyright myself
  8. *
  9. */
  10. class fileoperate
  11. {
  12. var path;// 文件路径
  13. var name;//文件名
  14. var result;//对文件操作后的结果
  15. /**
  16. * 本方法用来在path目录下创建name文件
  17. *
  18. * @param string path
  19. * @param string name
  20. */
  21. function creat_file(path,name)//建立文件
  22. {
  23. filename=path.name;
  24. if (file_exists(filename))
  25. {
  26. echo "文件已经存在,请换个文件名";
  27. }
  28. else
  29. {
  30. if (file_exists(path))
  31. {
  32. touch(name);
  33. rename(name,filename);
  34. echo "文件建立成功 </br>";
  35. }
  36. else{
  37. echo "目录不存在,请检查";
  38. }
  39. }
  40. }
  41. /**
  42. * 本方法用来写文件,向path路径下name文件写入content内容,bool为写入选项,值为1时
  43. * 接着文件原内容下继续写入,值为2时写入后的文件只有本次content内容
  44. *
  45. * @param string_type path
  46. * @param string_type name
  47. * @param string_type content
  48. * @param bool_type bool
  49. */
  50. function write_file(path,name,content,bool) //写文件
  51. {
  52. filename=path.name;
  53. if (bool==1) {
  54. if (is_writable(filename)) {
  55. handle=fopen(filename,'a');
  56. if (!handle) {
  57. echo "文件不能打开或文件不存在";
  58. exit;
  59. }
  60. result=fwrite(handle,content);
  61. if (!result) {
  62. echo "文件写入失败";
  63. }
  64. echo "文件写入成功";
  65. fclose(handle);
  66. }
  67. else echo "文件不存在";
  68. }
  69. if (bool==2) {
  70. if (!file_exists(filename)) {
  71. this->creat_file(path,name);
  72. handle=fopen(filename,'a');
  73. if (fwrite(handle,content));
  74. echo "文件写入成功";
  75. }
  76. else {
  77. unlink(filename);
  78. this->creat_file(path,name);
  79. this->write_file(path,name,content,1);
  80. echo "文件修改成功";
  81. }
  82. }
  83. }
  84. /**
  85. * 本方法删除path路径下name文件
  86. *
  87. * @param string_type path
  88. * @param string_type name
  89. */
  90. function del_file(path,name){ //删除文件
  91. filename=path.name;
  92. if (!file_exists(filename)) {
  93. echo "文件不存在,请确认路径是否正确";
  94. }
  95. else {
  96. if (unlink(filename)){
  97. echo "文件删除成功";
  98. }
  99. else echo "文件删除失败";
  100. }
  101. }
  102. /**
  103. * 本方法用来修改path目录里name文件中的内容(可视)
  104. *
  105. * @param string_type path
  106. * @param string_type name
  107. */
  108. function modi_file(path,name){ //文件修改
  109. filename=path.name;
  110. handle=fopen(filename,'r+');
  111. content=file_get_contents(filename);
  112. echo "<form name='form1' action='modi_file.php' method='post'>";
  113. echo "<textarea name=content rows='10'>content</textarea>文件内容";
  114. echo "<p>";
  115. echo "<input type='text' name='filename' value=filename />文件路径<p>";
  116. echo "<input name=ss type=submit value=修改文件内容 />";
  117. echo "</form>";
  118. }
  119. /**
  120. * 本方法用来复制name文件从spath到dpath
  121. *
  122. * @param string name
  123. * @param string spath
  124. * @param string dpath
  125. */
  126. function copy_file(name,spath,dpath) //文件复制
  127. {
  128. filename=spath.name;
  129. if (file_exists(filename)) {
  130. handle=fopen(filename,'a');
  131. copy(filename,dpath.name);
  132. if (file_exists(dpath.name))
  133. echo "文件复制成功";
  134. else echo "文件复制失败";
  135. }
  136. else echo "文件不存在";
  137. }
  138. /**
  139. * 本方法把name文件从spath移动到path路径
  140. *
  141. * @param string_type path
  142. * @param string_type dirname
  143. * @param string_type dpath
  144. */
  145. function move_file(name,spath,dpath) //移动文件
  146. {
  147. filename=spath.name;
  148. if (file_exists(filename)) {
  149. result=rename(filename,dpath.name);
  150. if (result==false or !file_exists(dpath))
  151. echo "文件移动失败或目的目录不存在";
  152. else
  153. echo "文件移动成功";
  154. }
  155. else {
  156. echo "文件不存在,无法移动";
  157. }
  158. }
  159. }
  160. ?>

实例3,代码如下:

这个比较高级了,不但可以实现文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录,还可以实现移动目录,copy,替换等操作,代码如下:

  1. <?php
  2. class FSC{
  3. // 函数名: getfilesource
  4. // 功能: 得到指定文件的内容
  5. // 参数: $file 目标文件
  6. // test passed
  7. function getfilesource($file){
  8. if($fp=fopen($file,'r')){
  9. $filesource=fread($fp,filesize($file));
  10. fclose($fp);
  11. return $filesource;
  12. }
  13. else
  14. return false;
  15. }
  16. // 函数名: writefile
  17. // 功能: 创建新文件,并写入内容,如果指定文件名已存在,那将直接覆盖
  18. // 参数: $file -- 新文件名
  19. // $source 文件内容
  20. //test passed
  21. function writefile($file,$source){
  22. if($fp=fopen($file,'w')){
  23. $filesource=fwrite($fp,$source);
  24. fclose($fp);
  25. return $filesource;
  26. }
  27. else
  28. return false;
  29. }
  30. // 函数名: movefile
  31. // 功能: 移动文件
  32. // 参数: $file -- 待移动的文件名
  33. // $destfile -- 目标文件名
  34. // $overwrite 如果目标文件存在,是否覆盖.默认是覆盖.
  35. // $bak 是否保留原文件 默认是不保留即删除原文件
  36. // test passed
  37. function movefile($file,$destfile,$overwrite=1,$bak=0){
  38. if(file_exists($destfile)){
  39. if($overwrite)
  40. unlink($destfile);
  41. else
  42. return false;
  43. }
  44. if($cf=copy($file,$destfile)){
  45. if(!$bak)
  46. return(unlink($file));
  47. }
  48. return($cf);
  49. }
  50. // 函数名: movedir
  51. // 功能: 这是下一涵数move的附助函数,功能就是移动目录
  52. function movedir($dir,$destdir,$overwrite=1,$bak=0){
  53. @set_time_limit(600);
  54. if(!file_exists($destdir))
  55. FSC::notfate_any_mkdir($destdir);
  56. if(file_exists($dir)&&(is_dir($dir)))
  57. {
  58. if(substr($dir,-1)!='/')$dir.='/';
  59. if(file_exists($destdir)&&(is_dir($destdir))){
  60. if(substr($destdir,-1)!='/')$destdir.='/';
  61. $h=opendir($dir);
  62. while($file=readdir($h)){
  63. if($file=='.'||$file=='..')
  64. {
  65. continue;
  66. $file="";
  67. }
  68. if(is_dir($dir.$file)){
  69. if(!file_exists($destdir.$file))
  70. FSC::notfate_mkdir($destdir.$file);
  71. else
  72. chmod($destdir.$file,0777);
  73. FSC::movedir($dir.$file,$destdir.$file,$overwrite,$bak);
  74. FSC::delforder($dir.$file);
  75. }
  76. else
  77. {
  78. if(file_exists($destdir.$file)){
  79. if($overwrite)unlink($destdir.$file);
  80. else{
  81. continue;
  82. $file="";
  83. }
  84. }
  85. if(copy($dir.$file,$destdir.$file))
  86. if(!$bak)
  87. if(file_exists($dir.$file)&&is_file($dir.$file))
  88. @unlink($dir.$file);
  89. }
  90. }
  91. }
  92. else
  93. return false;
  94. }
  95. else
  96. return false;
  97. }
  98. // 函数名: move
  99. // 功能: 移动文件或目录
  100. // 参数: $file -- 源文件/目录
  101. // $path -- 目标路径
  102. // $overwrite -- 如是目标路径中已存在该文件时,是否覆盖移动
  103. // -- 默认值是1, 即覆盖
  104. // $bak -- 是否保留备份(原文件/目录)
  105. function move($file,$path,$overwrite=1,$bak=0)
  106. {
  107. if(file_exists($file)){
  108. if(is_dir($file)){
  109. if(substr($file,-1)=='/')$dirname=basename(substr($file,0,strlen($file)-1));
  110. else $dirname=basename($file);
  111. if(substr($path,-1)!='/')$path.='/';
  112. if($file!='.'||$file!='..'||$file!='../'||$file!='./')$path.=$dirname;
  113. FSC::movedir($file,$path,$overwrite,$bak);
  114. if(!$bak)FSC::delforder($file);
  115. }
  116. else{
  117. if(file_exists($path)){
  118. if(is_dir($path))chmod($path,0777);
  119. else {
  120. if($overwrite)
  121. @unlink($path);
  122. else
  123. return false;
  124. }
  125. }
  126. else
  127. FSC::notfate_any_mkdir($path);
  128. if(substr($path,-1)!='/')$path.='/';
  129. FSC::movefile($file,$path.basename($file),$overwrite,$bak);
  130. }
  131. }
  132. else
  133. return false;
  134. }
  135. // 函数名: delforder
  136. // 功能: 删除目录,不管该目录下是否有文件或子目录,全部删除哦,小心别删错了哦!
  137. // 参数: $file -- 源文件/目录
  138. //test passed
  139. function delforder($file) {
  140. chmod($file,0777);
  141. if (is_dir($file)) {
  142. $handle = opendir($file);
  143. while($filename = readdir($handle)) {
  144. if ($filename != "." && $filename != "..")
  145. {
  146. FSC::delforder($file."/".$filename);
  147. }
  148. }
  149. closedir($handle);
  150. return(rmdir($file));
  151. }
  152. else {
  153. unlink($file);
  154. }
  155. }
  156. // 函数名: notfate_mkdir
  157. // 功能: 创建新目录,这是来自php.net的一段代码.弥补mkdir的不足.
  158. // 参数: $dir -- 目录名
  159. function notfate_mkdir($dir,$mode=0777){
  160. $u=umask(0);
  161. $r=mkdir($dir,$mode);
  162. umask($u);
  163. return $r;
  164. }
  165. // 函数名: notfate_any_mkdir
  166. // 功能: 创建新目录,与上面的notfate_mkdir有点不同,因为它多了一个any,即可以创建多级目录
  167. // 如:notfate_any_mkdir("abc/abc/abc/abc/abc")
  168. // 参数: $dirs -- 目录名
  169. function notfate_any_mkdir($dirs,$mode=0777)
  170. {
  171. if(!strrpos($dirs,'/'))
  172. {
  173. return(FSC::notfate_mkdir($dirs,$mode));
  174. }else
  175. {
  176. $forder=explode('/',$dirs);
  177. $f='';
  178. for($n=0;$n<count($forder);$n++)
  179. {
  180. if($forder[$n]=='') continue;
  181. $f.=((($n==0)&&($forder[$n]<>''))?(''):('/')).$forder[$n];
  182. if(file_exists($f)){
  183. chmod($f,0777);
  184. continue;
  185. }
  186. else
  187. {
  188. if(FSC::notfate_mkdir($f,$mode)) continue;
  189. else
  190. return false;
  191. }
  192. }
  193. return true;
  194. }
  195. }
  196. }
  197. ?>