php简单实用的操作文件工具类,创建、移动、复制、删除

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. ?>