Khởi tạo đối tượng DirectoryIterator

$dirs = new \DirectoryIterator($directory)

Trong đó $directory là đường dẫn đến thư mục cần lấy thông tin, ví dụ/home

Sau khi khởi tạo xong, thì có thể dùng các hàm cơ bản sau để để kiểm tra thư mục $directory.

Một số hàm cơ bản của DirectoryIterator

  • getExtension ( void ): lấy đuôi file (phần mở rộng ví dụ php, jpg ...)
  • getFilename(): lấy tên file (như index.php)
  • getPath() : lấy đường đẫn chứa file, folder
  • getSize() : kích thước (bytes)
  • isDir() : kiểm tra có là thư mục không
  • isDot() : kiểm tra file, thư mục là . hoặc .. hay không
  • isFile() : kiểm tra có là file
  • isLink() : kiểm tra có là Sym Link
  • isReadable() : xem có được phép đọc
  • isWritable() : xem có được ghi

Ứng dụng

Lấy tất các các thư mục con, file trong một thư mục

(ngoại trừ ...)

<?php

foreach (new DirectoryIterator('../moodle') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}

?>

Hàm đệ quy lấy tất cả thư mục con và file trong một thư mục

(Hàm đệ quy recursiveDirectoryIterator duyệt hết cây từ thư mục chỉ ra, trả về mảng các file, thư mục)

<?php

 public function recursiveDirectoryIterator ($directory = null, $files = array()) {
    $iterator = new \DirectoryIterator ( $directory );

    foreach ( $iterator as $info ) {
        if ($info->isFile ()) {
            $files [$info->__toString ()] = $info;
        } elseif (!$info->isDot ()) {
            $list = array($info->__toString () => $this->recursiveDirectoryIterator(
                        $directory.DIRECTORY_SEPARATOR.$info->__toString ()
            ));
            if(!empty($files))
                $files = array_merge_recursive($files, $filest);
            else {
                $files = $list;
            }
        }
    }
    return $files;
}

?>