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. 【BZOJ-3343】教主的魔法 分块

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 950  Solved: 414[Submit][Status][Discuss ...

  2. 【bzoj2152】 聪聪可可

    http://www.lydsy.com/JudgeOnline/problem.php?id=2152 (题目链接) 题意 给出一棵n个节点的带权树,求有多少点对的距离是3的倍数. solution ...

  3. Linux VFS Extended Attribute And Access Control Table

    catalog . 简介 . 扩展属性 . 访问控制表 . 小结 0. 简介 许多文件系统都提供了一些特性,扩展了VFS层提供的标准功能,虚拟文件系统不可能为所有特性都提供具体的数据结构.超出标准的U ...

  4. ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECShop存在一个盲注漏洞,问题存在于/api/client/api. ...

  5. java-HashMap方法讲解

    前言:Java8之后新增挺多新东西,在网上找了些相关资料,关于HashMap在自己被血虐之后痛定思痛决定整理一下相关知识方便自己看.图和有些内容参考的这个文章:http://www.importnew ...

  6. Code笔记之:CSS块级元素、内联元素概念

    文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不 ...

  7. JS+JavaBean判断管理员增删改的操作权限

    目标:用户分管理员和普通用户2种,都可以登陆,但是管理员才可以执行增删改的权限,普通用户可以看,但是执行的时候提示权限不足 帖代码片段:我只会这一种,在JSP页面判断 省略得权限数值方法: <% ...

  8. iOS - Xcode7.3插件实效问题解决方法

    以往Xcode升级插件实效.1.关闭xcode 2.终端获取uid 3.文件中info.plist手动添加uid,现在不用了.在网上找的,特地记录一下,尤其是插件太多,不会麻烦了. 详细操作步骤: 关 ...

  9. Excel_replace

    有时候我们需要对单元格中的数据需要一些精确的处理,比如将部分以70开的工号升为706,这时简单的查找替换就不能满足我的需求,因为这样会替换掉工号中末尾或者中间位的70,造成工号的错误. 如何实现这种精 ...

  10. JVM内存简单理解

    1.首先简单说一下CPU与内存之间的关系 CPU运转速度快,磁盘的读写速度远远不及CPU运转速度,所以设计了内存来缓冲CPU等待磁盘读写:随着CPU的发展,内存读写也远远跟不上CPU的读写速度,CPU ...