improved file class

This commit is contained in:
benson
2023-04-25 22:53:02 +08:00
parent 412939fe2b
commit 8937ac9404
2 changed files with 20 additions and 15 deletions

View File

@@ -6,6 +6,8 @@ class File
{ {
private $dirName; private $dirName;
private $suffix;
private $files;
//$dir_name = iconv("utf-8", "gb2312", $dir_name); //$dir_name = iconv("utf-8", "gb2312", $dir_name);
@@ -14,11 +16,6 @@ class File
$this->dirName = $dirname; $this->dirName = $dirname;
$this->suffix = $suffix; $this->suffix = $suffix;
if (!is_dir($dirname)) {
throw new \Exception("directory ${dirname} doesn't exit");
}
} }
public static function create($dir, $suffix) public static function create($dir, $suffix)
@@ -26,34 +23,42 @@ class File
return new static($dir, $suffix); return new static($dir, $suffix);
} }
public function getFiles()
{
return $this->files;
}
public function scandir($recursive = false) public function scandir($recursive = false)
{ {
if (!is_dir($this->dirName)) {
throw new \Exception("directory {$this->dirName} doesn't exist");
}
if ($recursive) { if ($recursive) {
return $this->scandirRecursive(); $this->files = $this->scandirRecursive();
return $this->files;
} }
$files = \glob($this->dirName . DIRECTORY_SEPARATOR . "*.{$this->suffix}"); $files = \glob($this->dirName . DIRECTORY_SEPARATOR . "*.{$this->suffix}");
$this->Files = $files; $this->files = $files;
return $files; return $files;
} }
protected function scandirRecursive() protected function scandirRecursive()
{ {
$directory = new \RecursiveDirectoryIterator($this->dirName); $directory = new \RecursiveDirectoryIterator($this->dirName);
$iterator = new \RecursiveIteratorIterator($directory); $iterator = new \RecursiveIteratorIterator($directory);
$iterators = new \RegexIterator($iterator, '/.*\.' . $this->suffix . '$/', \RegexIterator::GET_MATCH); $iterators = new \RegexIterator($iterator, '/.*\.' . $this->suffix . '$/', \RegexIterator::GET_MATCH);
$files = array();
foreach ($iterators as $info) { foreach ($iterators as $info) {
if ($info) { if ($info) {
$files[] = reset($info); yield reset($info);
} }
} }
$this->Files = $files;
return $files;
} }
public function getBasename($file){
return basename($file,".".$this->suffix); static public function getBasename($file)
{
return pathinfo($file, PATHINFO_FILENAME);
} }
} }

View File

@@ -354,7 +354,7 @@ class Helper
$files = $filetool->scandir(); $files = $filetool->scandir();
$sites = []; $sites = [];
foreach ($files as $file) { foreach ($files as $file) {
$basename = $filetool->getBasename($file); $basename = File::getBasename($file);
$namespace = 'OCA\\NCDownloader\\Search\\Sites\\'; $namespace = 'OCA\\NCDownloader\\Search\\Sites\\';
$className = $namespace . $basename; $className = $namespace . $basename;
if (in_array(searchInterface::class, class_implements($className))) { if (in_array(searchInterface::class, class_implements($className))) {