<?php
|
|
namespace App\Utils;
|
|
class FileUtils {
|
|
public static function scanBaseDir($baseDir): array
|
|
{
|
|
if (!is_dir($baseDir)) {
|
|
return [];
|
|
}
|
|
$dirs = scandir($baseDir);
|
|
$baseMap = [];
|
|
foreach ($dirs as $dir) {
|
|
if ($dir == "." || $dir == ".." || $dir == ".DS_Store") {
|
|
continue;
|
|
}
|
|
$baseMap[substr($dir, 0, strpos($dir, "-"))] = $baseDir . "/" . $dir;
|
|
}
|
|
return $baseMap;
|
|
}
|
|
|
|
public static function scanDuplicateDir($baseDir): array {
|
|
if (!is_dir($baseDir)) {
|
|
return [];
|
|
}
|
|
$dirs = scandir($baseDir);
|
|
$baseMap = [];
|
|
foreach ($dirs as $dir) {
|
|
if ($dir == "." || $dir == ".." || $dir == ".DS_Store") {
|
|
continue;
|
|
}
|
|
$baseMap[substr($dir, 0, strpos($dir, "-"))][] = $baseDir . "/" . $dir;
|
|
}
|
|
return $baseMap;
|
|
}
|
|
|
|
public static function humanFilesize($bytes, $decimals = 2) {
|
|
$sz = 'BKMGTP';
|
|
$factor = floor((strlen($bytes) - 1) / 3);
|
|
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
|
|
}
|
|
}
|
|
|