php简单实用好用的文件及文件夹复制函数和工具类(创建、移动、复制、删除)
  1. function recurse_copy($src,$dst) {  // 原目录,复制到的目录
  2. $dir = opendir($src);
  3. @mkdir($dst);
  4. while(false !== ( $file = readdir($dir)) ) {
  5. if (( $file != '.' ) && ( $file != '..' )) {
  6. if ( is_dir($src . '/' . $file) ) {
  7. recurse_copy($src . '/' . $file,$dst . '/' . $file);
  8. }
  9. else {
  10. copy($src . '/' . $file,$dst . '/' . $file);
  11. }
  12. }
  13. }
  14. closedir($dir);
  15. }
  16. echo recurse_copy("原文件夹","目录文件夹");
复制

还有更流弊的工具类:

  1. <?php
  2. /**
  3. * 操纵文件类
  4. *
  5. * 例子:
  6. * FileUtil::createDir('a/1/2/3');                    测试建立文件夹 建一个a/1/2/3文件夹
  7. * FileUtil::createFile('b/1/2/3');                    测试建立文件        在b/1/2/文件夹下面建一个3文件
  8. * FileUtil::createFile('b/1/2/3.exe');             测试建立文件        在b/1/2/文件夹下面建一个3.exe文件
  9. * FileUtil::copyDir('b','d/e');                    测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去
  10. * FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件        建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去
  11. * FileUtil::moveDir('a/','b/c');                    测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹
  12. * FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件        建立一个b/d文件夹,并把b/1/2中的3.exe移动进去
  13. * FileUtil::unlinkFile('b/d/3.exe');             测试删除文件        删除b/d/3.exe文件
  14. * FileUtil::unlinkDir('d');                      测试删除文件夹 删除d文件夹
  15. */
  16. class FileUtil {
  17. /**
  18. * 建立文件夹
  19. *
  20. * @param string $aimUrl
  21. * @return viod
  22. */
  23. function createDir($aimUrl) {
  24. $aimUrl = str_replace('', '/', $aimUrl);
  25. $aimDir = '';
  26. $arr = explode('/', $aimUrl);
  27. $result = true;
  28. foreach ($arr as $str) {
  29. $aimDir .= $str . '/';
  30. if (!file_exists($aimDir)) {
  31. $result = mkdir($aimDir);
  32. }
  33. }
  34. return $result;
  35. }
  36. /**
  37. * 建立文件
  38. *
  39. * @param string $aimUrl
  40. * @param boolean $overWrite 该参数控制是否覆盖原文件
  41. * @return boolean
  42. */
  43. function createFile($aimUrl, $overWrite = false) {
  44. if (file_exists($aimUrl) && $overWrite == false) {
  45. return false;
  46. } elseif (file_exists($aimUrl) && $overWrite == true) {
  47. FileUtil :: unlinkFile($aimUrl);
  48. }
  49. $aimDir = dirname($aimUrl);
  50. FileUtil :: createDir($aimDir);
  51. touch($aimUrl);
  52. return true;
  53. }
  54. /**
  55. * 移动文件夹
  56. *
  57. * @param string $oldDir
  58. * @param string $aimDir
  59. * @param boolean $overWrite 该参数控制是否覆盖原文件
  60. * @return boolean
  61. */
  62. function moveDir($oldDir, $aimDir, $overWrite = false) {
  63. $aimDir = str_replace('', '/', $aimDir);
  64. $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';
  65. $oldDir = str_replace('', '/', $oldDir);
  66. $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/';
  67. if (!is_dir($oldDir)) {
  68. return false;
  69. }
  70. if (!file_exists($aimDir)) {
  71. FileUtil :: createDir($aimDir);
  72. }
  73. @ $dirHandle = opendir($oldDir);
  74. if (!$dirHandle) {
  75. return false;
  76. }
  77. while (false !== ($file = readdir($dirHandle))) {
  78. if ($file == '.' || $file == '..') {
  79. continue;
  80. }
  81. if (!is_dir($oldDir . $file)) {
  82. FileUtil :: moveFile($oldDir . $file, $aimDir . $file, $overWrite);
  83. } else {
  84. FileUtil :: moveDir($oldDir . $file, $aimDir . $file, $overWrite);
  85. }
  86. }
  87. closedir($dirHandle);
  88. return rmdir($oldDir);
  89. }
  90. /**
  91. * 移动文件
  92. *
  93. * @param string $fileUrl
  94. * @param string $aimUrl
  95. * @param boolean $overWrite 该参数控制是否覆盖原文件
  96. * @return boolean
  97. */
  98. function moveFile($fileUrl, $aimUrl, $overWrite = false) {
  99. if (!file_exists($fileUrl)) {
  100. return false;
  101. }
  102. if (file_exists($aimUrl) && $overWrite = false) {
  103. return false;
  104. } elseif (file_exists($aimUrl) && $overWrite = true) {
  105. FileUtil :: unlinkFile($aimUrl);
  106. }
  107. $aimDir = dirname($aimUrl);
  108. FileUtil :: createDir($aimDir);
  109. rename($fileUrl, $aimUrl);
  110. return true;
  111. }
  112. /**
  113. * 删除文件夹
  114. *
  115. * @param string $aimDir
  116. * @return boolean
  117. */
  118. function unlinkDir($aimDir) {
  119. $aimDir = str_replace('', '/', $aimDir);
  120. $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';
  121. if (!is_dir($aimDir)) {
  122. return false;
  123. }
  124. $dirHandle = opendir($aimDir);
  125. while (false !== ($file = readdir($dirHandle))) {
  126. if ($file == '.' || $file == '..') {
  127. continue;
  128. }
  129. if (!is_dir($aimDir . $file)) {
  130. FileUtil :: unlinkFile($aimDir . $file);
  131. } else {
  132. FileUtil :: unlinkDir($aimDir . $file);
  133. }
  134. }
  135. closedir($dirHandle);
  136. return rmdir($aimDir);
  137. }
  138. /**
  139. * 删除文件
  140. *
  141. * @param string $aimUrl
  142. * @return boolean
  143. */
  144. function unlinkFile($aimUrl) {
  145. if (file_exists($aimUrl)) {
  146. unlink($aimUrl);
  147. return true;
  148. } else {
  149. return false;
  150. }
  151. }
  152. /**
  153. * 复制文件夹
  154. *
  155. * @param string $oldDir
  156. * @param string $aimDir
  157. * @param boolean $overWrite 该参数控制是否覆盖原文件
  158. * @return boolean
  159. */
  160. function copyDir($oldDir, $aimDir, $overWrite = false) {
  161. $aimDir = str_replace('', '/', $aimDir);
  162. $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';
  163. $oldDir = str_replace('', '/', $oldDir);
  164. $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/';
  165. if (!is_dir($oldDir)) {
  166. return false;
  167. }
  168. if (!file_exists($aimDir)) {
  169. FileUtil :: createDir($aimDir);
  170. }
  171. $dirHandle = opendir($oldDir);
  172. while (false !== ($file = readdir($dirHandle))) {
  173. if ($file == '.' || $file == '..') {
  174. continue;
  175. }
  176. if (!is_dir($oldDir . $file)) {
  177. FileUtil :: copyFile($oldDir . $file, $aimDir . $file, $overWrite);
  178. } else {
  179. FileUtil :: copyDir($oldDir . $file, $aimDir . $file, $overWrite);
  180. }
  181. }
  182. return closedir($dirHandle);
  183. }
  184. /**
  185. * 复制文件
  186. *
  187. * @param string $fileUrl
  188. * @param string $aimUrl
  189. * @param boolean $overWrite 该参数控制是否覆盖原文件
  190. * @return boolean
  191. */
  192. function copyFile($fileUrl, $aimUrl, $overWrite = false) {
  193. if (!file_exists($fileUrl)) {
  194. return false;
  195. }
  196. if (file_exists($aimUrl) && $overWrite == false) {
  197. return false;
  198. } elseif (file_exists($aimUrl) && $overWrite == true) {
  199. FileUtil :: unlinkFile($aimUrl);
  200. }
  201. $aimDir = dirname($aimUrl);
  202. FileUtil :: createDir($aimDir);
  203. copy($fileUrl, $aimUrl);
  204. return true;
  205. }
  206. }
  207. ?>

php简单实用的操作文件工具类(创建、移动、复制、删除)的更多相关文章

  1. Properties文件工具类的使用--获取所有的键值、删除键、更新键等操作

    有时候我们希望处理properties文件,properties文件是键值对的文件形式,我们可以借助Properties类操作. 工具类如下:(代码中日志采用了slf4j日志) package cn. ...

  2. java中文件操作的工具类

    代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...

  3. 自己封装的poi操作Excel工具类

    自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...

  4. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  5. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  6. android操作ini工具类

    package com.smarteye.common; import java.io.BufferedReader; import java.io.BufferedWriter; import ja ...

  7. 简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下   本文实例讲述了简单实用的PHP防注 ...

  8. 自动扫描FTP文件工具类 ScanFtp.java

    package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  9. 读取Config文件工具类 PropertiesConfig.java

    package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...

随机推荐

  1. 【bzoj3218】 a + b Problem

    http://www.lydsy.com/JudgeOnline/problem.php?id=3218 (题目链接) 题意 给${n}$个格子涂白或黑色,白则${w_i}$,黑则${b_i}$的好看 ...

  2. 分区还原工具(DiskGenius)

    不小心删除的分区可以实用DiskGenius进行还原. 下载地址:http://www.upantool.com/qidong/2012/DiskGenius_3.7.1.html 操作方法: 打开D ...

  3. C#制作验证码

    void CodeImage(string code) { if (code == null || code.Trim() == string.Empty) return; System.Drawin ...

  4. POJ 1064 Cable master (二分)

    题目链接: 传送门 Cable master Time Limit: 1000MS     Memory Limit: 65536K 题目描述 有N条绳子,它们长度分别为Li.如果从它们中切割出K条长 ...

  5. Beta Daily Scrum 第四天

    [目录] 1.任务进度 2.困难及解决 3.燃尽图 4.代码check-in 5.站立会议图 6.总结 1. 任务进度 学号 今日完成 明日完成 612 完成成就界面的统计图表 继续编写成就界面的图表 ...

  6. 有return的情况下try catch finally的执行顺序

    结论:1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没 ...

  7. web前端环境搭建

    第一部分:浏览器 浏览器推荐chrome浏览器.FireFox浏览器. 1. chrome浏览器因为集成了Google Developer Tools(谷歌开发者工具),因此大受欢迎. 下载地址:ht ...

  8. Linux bash 中,如何将正常信息和错误信息输出到文件

    问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...

  9. 【原】react做tab切换的几种方式

    最近搞一个pc端的活动,搞了一个多月,甚烦,因为相比于pc端,更喜欢移动端多一点.因为移动端又能搞我的react了. 今天主要总结一下react当中tab切换的几种方式,因为tab切换基本上都会用到. ...

  10. mysql dump

    mysqldump wifi3 > wifi3.sql mysqldump wifi3 < wifi3.sql