You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

41 lines
1.2 KiB

<?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];
}
}