1: <?php
2: namespace aliuly\common;
3:
4: 5: 6:
7: abstract class FileUtils {
8: 9: 10: 11: 12: 13:
14: static public function cp_r($src,$dst) {
15: if (is_link($src)) {
16: $l = readlink($src);
17: if (!symlink($l,$dst)) return false;
18: } elseif (is_dir($src)) {
19: if (!mkdir($dst)) return false;
20: $objects = scandir($src);
21: if ($objects === false) return false;
22: foreach ($objects as $file) {
23: if ($file == "." || $file == "..") continue;
24: if (!self::cp_r($src.DIRECTORY_SEPARATOR.$file,$dst.DIRECTORY_SEPARATOR.$file))
25: return false;
26: }
27: } else {
28: if (!copy($src,$dst)) return false;
29: }
30: return true;
31: }
32: 33: 34: 35: 36:
37: static public function rm_r($path) {
38: if (!is_link($path) && is_dir($path)) {
39: $objects = scandir($path);
40: if ($objects === false) return false;
41: foreach ($objects as $file) {
42: if ($file == "." || $file == "..") continue;
43: if (!self::rm_r($path.DIRECTORY_SEPARATOR.$file)) return false;
44: }
45: return rmdir($path);
46: }
47: return unlink($path);
48: }
49: 50: 51: 52: 53: 54: 55:
56: static public function tempdir($dir, $prefix='', $mode=0700) {
57: if (substr($dir, -1) != '/') $dir .= '/';
58: do {
59: $path = $dir.$prefix.mt_rand(0, 9999999);
60: } while (!mkdir($path, $mode));
61: return $path;
62: }
63:
64: }
65: