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. ?>
时间: 2024-10-25 23:05:07

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

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

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

java中IO写文件工具类

下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的. /** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] ge

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

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口是为了统一各种类型不同的资源而定义的,Spring 提供了若干 Resource 接口的实现类,这些实现类可以轻松地加载不同类型的底层资源,并提供了获取文件名.URL 地址以及资源内容的操作方法 访问文件资源 * 通过 FileSystemResource 以文件系统绝对路径的

Java 借助poi操作Wold工具类

? Apache封装的POI组件对Excel,Wold的操作已经非常的丰富了,在项目上也会经常用到一些POI的基本操作 这里就简单的阐述POI操作Wold的基本工具类,代码还是有点粗造的,但是不影响使用. 这个类包含了一些对文本进行换行,加粗,倾斜,字体颜色,大小,首行缩进,添加边框等方法.分享给大家学习下: Apache POI的组件: ApachePOI包含用于处理MS-Office的所有OLE2复合文档的类和方法.该API的组件列表如下 - POIFS(不良混淆实现文件系统) - 此组件是

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

poi操作Excel工具类

在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.写入Excel.合并Excel的功能.

用于JS日期格式化,以及简单运算的Date包装工具类

1. [文件] yDate.js/** * | yDate.js | Copyright (c) 2013 yao.yl | email: [email protected] | Date: 2012-09-03 | */(function(global) {     var objectPrototypeToString = Object.prototype.toString;     var isDate = function(value) {        return objectPro

android操作ini工具类

package com.smarteye.common; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Inp

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

这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注入类.分享给大家供大家参考.具体如下: PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下: <?php /**  * 参数处理类  *