improved file class
This commit is contained in:
@@ -6,6 +6,8 @@ class File
|
||||
{
|
||||
|
||||
private $dirName;
|
||||
private $suffix;
|
||||
private $files;
|
||||
|
||||
//$dir_name = iconv("utf-8", "gb2312", $dir_name);
|
||||
|
||||
@@ -14,11 +16,6 @@ class File
|
||||
|
||||
$this->dirName = $dirname;
|
||||
$this->suffix = $suffix;
|
||||
|
||||
if (!is_dir($dirname)) {
|
||||
throw new \Exception("directory ${dirname} doesn't exit");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static function create($dir, $suffix)
|
||||
@@ -26,34 +23,42 @@ class File
|
||||
return new static($dir, $suffix);
|
||||
}
|
||||
|
||||
public function getFiles()
|
||||
{
|
||||
return $this->files;
|
||||
}
|
||||
|
||||
public function scandir($recursive = false)
|
||||
{
|
||||
if (!is_dir($this->dirName)) {
|
||||
throw new \Exception("directory {$this->dirName} doesn't exist");
|
||||
}
|
||||
|
||||
if ($recursive) {
|
||||
return $this->scandirRecursive();
|
||||
$this->files = $this->scandirRecursive();
|
||||
return $this->files;
|
||||
}
|
||||
|
||||
$files = \glob($this->dirName . DIRECTORY_SEPARATOR . "*.{$this->suffix}");
|
||||
$this->Files = $files;
|
||||
$this->files = $files;
|
||||
return $files;
|
||||
}
|
||||
|
||||
protected function scandirRecursive()
|
||||
{
|
||||
|
||||
$directory = new \RecursiveDirectoryIterator($this->dirName);
|
||||
$iterator = new \RecursiveIteratorIterator($directory);
|
||||
$iterators = new \RegexIterator($iterator, '/.*\.' . $this->suffix . '$/', \RegexIterator::GET_MATCH);
|
||||
|
||||
$files = array();
|
||||
foreach ($iterators as $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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user