目錄和周遊目錄函數
以下函數都是基于目錄(檔案夾)操作的函數
mkdir() 建立新目錄
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
權限模式:在linux下生效, 目錄的權限。該參數對于win是忽略的。
如果建立的目錄的上級目錄不存在, 是否遞歸建立, 使用第三個參數遞歸建立(true);
linux系統下 mkdir 遞歸建立目錄相容性不好;
編寫自定義函數: Linux系統下遞歸建立目錄
function Directory( $dir ){
return is_dir ( $dir ) or Directory(dirname( $dir )) and mkdir ( $dir , 0777);
}
rmdir() 删除目錄
bool rmdir ( string $dirname [, resource $context ] )
嘗試删除 dirname 所指定的目錄。 該目錄必須是空的, 而且要有相應的權限。 失敗時會産生一個 E_WARNING 級别的錯誤。
周遊目錄函數
opendir() — 打開目錄句柄
resource opendir ( string $path [, resource $context ] )
打開一個目錄句柄, 可用于之後的 closedir(),readdir() 和 rewinddir() 調用中。
readdir() — 從目錄句柄中讀取條目
string readdir ( resource $dir_handle )
傳回目錄中下一個檔案的檔案名。檔案名以在檔案系統中的排序傳回。
closedir() — 關閉目錄句柄
void closedir ( resource $dir_handle )
關閉由 dir_handle 指定的目錄流。流必須之前被 opendir() 所打開。
rewinddir() 倒回目錄句柄
void rewinddir ( resource $dir_handle )
将 dir_handle 指定的目錄流重置到目錄的開頭。
<?php
$dir = "/etc/php5/";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>
簡單方式讀取目錄結構
scandir — 列出指定路徑中的檔案和目錄
array scandir ( string $directory [, int $sorting_order [, resource $context ]] )
傳回一個 array ,包含有 directory 中的檔案和目錄。
directory:要被浏覽的目錄
sorting_order:預設的排序順序是按字母升序排列(預設是0,升序)。如果使用了可選參數 sorting_order(0設為 1), 則排序順序是按字母降序排列。
context:context參數的說明見手冊中的 Streams API 一章。
傳回值:成功則傳回包含有檔案名的array,如果失敗則傳回 FALSE 。如果 directory不是個目錄, 則傳回布爾值 FALSE 并生成一條 E_WARNING 級的錯誤。
<?php
$dir = '/tmp' ;
$files1 = scandir ( $dir );
$files2 = scandir ( $dir , 1 );
print_r ( $files1 );
print_r ( $files2 );
?>
以上例程的輸出類似于:
Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)
删除目錄 rmdir()
bool rmdir ( string $dirname [, resource $context ] )
嘗試删除 dirname 所指定的目錄。 該目錄必須是空的,而且要有相應的權限。 失敗時會産生一個 E_WARNING 級别的錯誤。
dirname:目錄的路徑。
context:Note: 在 PHP 5.0.0 中增加了對上下文(Context)的支援。有關上下文(Context)的說明參見 Streams。
<?php
if (! is_dir ( 'examples' )) {
mkdir ( 'examples' );
}
rmdir ( 'examples' );
?>