Lấy thông tin hệ thống file, thư mục trong PHP cùng DirectoryIterator

blogphp27 thg12 2018
PHP
DirectoryIterator là một lớp thuộc SPL, cho phép duyệt qua hệ thống thư mục để lấy thông tin các thư mục, file tong hệ thống.

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

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ố phươmg thức cơ bản

  • 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

----Tất cả phương thức-------------

  1. public __construct ( string $path )
  2. public DirectoryIterator current ( void )
  3. public int getATime ( void )
  4. public string getBasename ([ string $suffix ] )
  5. public int getCTime ( void )
  6. public string getExtension ( void )
  7. public string getFilename ( void )
  8. public int getGroup ( void )
  9. public int getInode ( void )
  10. public int getMTime ( void )
  11. public int getOwner ( void )
  12. public string getPath ( void )
  13. public string getPathname ( void )
  14. public int getPerms ( void )
  15. public int getSize ( void )
  16. public string getType ( void )
  17. public bool isDir ( void )
  18. public bool isDot ( void )
  19. public bool isExecutable ( void )
  20. public bool isFile ( void )
  21. public bool isLink ( void )
  22. public bool isReadable ( void )
  23. public bool isWritable ( void )
  24. public string key ( void )
  25. public void next ( void )
  26. public void rewind ( void )
  27. public void seek ( int $position )
  28. public string __toString ( void )
  29. public bool valid ( void )


Ứ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;
}

?>

xxx

Gửi bài viết tới Facebook

Gửi hình ảnh