Lấy thông tin hệ thống file, thư mục trong PHP cùng DirectoryIterator
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.
----Tất cả phương thức-------------
xxx
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-------------
-
public __construct
( string
$path
) - public DirectoryIterator current ( void )
- public int getATime ( void )
-
public
string
getBasename
([
string
$suffix
] ) - public int getCTime ( void )
- public string getExtension ( void )
- public string getFilename ( void )
- public int getGroup ( void )
- public int getInode ( void )
- public int getMTime ( void )
- public int getOwner ( void )
- public string getPath ( void )
- public string getPathname ( void )
- public int getPerms ( void )
- public int getSize ( void )
- public string getType ( void )
- public bool isDir ( void )
- public bool isDot ( void )
- public bool isExecutable ( void )
- public bool isFile ( void )
- public bool isLink ( void )
- public bool isReadable ( void )
- public bool isWritable ( void )
- public string key ( void )
- public void next ( void )
- public void rewind ( void )
-
public
void
seek
( int
$position
) - public string __toString ( void )
- 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ừ .
và ..
)
<?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