PHP-目錄的基本操作
阿新 • • 發佈:2018-01-23
默認 目錄大小 方式 span 指針 無法創建 read href archive
1.基本文件類型
File 普通文件,如文本文件、可執行文件。
Dir 目錄文件,比如某個文件夾
Unknow 未知文件
在windows中只有上面三種文件類型,如果是linux系統還有下面文件類型
Block 塊設備,比如某個磁盤分區
Char 字符設備,比如鍵盤、打印機
Fifo 管道,用來將數據從一個進程傳遞到另一個進程
Link 鏈接,相當於windows中的快捷方式
使用filetype獲得文件的類型
1 <?php 2 /*使用filetype()獲取文件類型*/ 3 4 echo filetype(__FILE__);//file 5 echo filetype(__DIR__);//dir 6 ?>
判斷文件類型
1 <?php 2 /*使用filetype()獲取文件類型*/ 3 4 echo is_file(__FILE__);//true 5 echo is_dir(__DIR__);//true 6 ?>
2.文件的屬性
1 <?php 2 /*file_exist()判斷文件是否存在*/ 3 if(file_exists(__FILE__)) echo "文件".__FILE__."存在<br>"; 4if(file_exists(__DIR__)) echo "目錄".__DIR__."存在<br>"; 5 6 /*filesize()取得文件的大小,以字節為單位*/ 7 /*註:是取得文件的大小不是目錄*/ 8 echo "文件".__FILE__."的大小是".filesize(__FILE__)."字節<br>"; 9 10 /*is_readable()判斷文件是否可讀*/ 11 if(is_readable(__FILE__)) echo "文件".__FILE__."可讀<br>"; 12 13/*is_writable()判斷文件是否可寫*/ 14 if(is_readable(__FILE__)) echo "文件".__FILE__."可寫<br>"; 15 16 /*is_executable()判斷文件是否可執行*/ 17 if(is_readable(__FILE__)) echo "文件".__FILE__."可執行<br>"; 18 19 date_default_timezone_set(‘PRC‘); 20 21 /*filectime()文件的創建時間*/ 22 echo "文件的創建時間為".date(‘Y/m/d H:i:s‘,filectime(__FILE__))."<br>"; 23 24 /*filemtime()文件的修改時間*/ 25 echo "文件的修改時間為".date(‘Y/m/d H:i:s‘,filemtime(__FILE__))."<br>"; 26 27 /*fileatime()文件的最後訪問時間*/ 28 echo "文件的最後訪問時間".date(‘Y/m/d H:i:s‘,filectime(__FILE__))."<br>"; 29 30 /*stat()獲取文件大部分屬性*/ 31 print_r(stat(__FILE__)); 32 ?>
註:windows系統下默認是不會更新訪問時間的,具體可以參考這裏。
3.目錄的基本操作
路徑分隔符
Linux系統中以‘/‘做為路徑分隔符,像這樣E:/xampp/htdocs/test.php
Windows系統中以‘\‘作為路徑分隔符E:\xampp\htdocs\test.php,但是Windows系統也是支持‘/‘作為分隔符的。
所以為了保證程序的可移植性,最好用Linux的寫法。
解析路徑
1 <?php 2 /*basename()返回路徑中的文件名*/ 3 echo "路徑".__FILE__."的文件名是".basename(__FILE__)."<br>"; 4 5 /*dirname()返回一個路徑中的目錄部分*/ 6 echo "路徑".__FILE__."的目錄名是".dirname(__FILE__)."<br>"; 7 8 /*pathinfo()將一個路徑中的信息以數組形式返回*/ 9 print_r(pathinfo(__FILE__)); 10 ?>
遍歷目錄
1 <?php 2 /*opendir()打開一個目錄,接受一個路徑,返回該目錄的資源句柄*/ 3 var_dump($dir=opendir(__DIR__));//resource(3) of type (stream) 4 echo "<br>"; 5 6 /*readdir()接受一個資源句柄返回該目錄當前指針位置的文件名,並將指針向下移動*/ 7 /*前兩個文件名是 . 和 ..表示當前目錄和上一級目錄*/ 8 9 echo readdir($dir)."<br>";//. 10 echo readdir($dir)."<br>";//.. 11 12 /*rewinddir()將目錄指針重置到開頭出*/ 13 rewinddir($dir); 14 echo readdir($dir)."<br>";//. 15 16 /*closedir()釋放資源*/ 17 closedir($dir); 18 ?>
1 <?php 2 /*遍歷出目錄的結構*/ 3 4 function dirlist($dir){ 5 $sdir=opendir($dir); 6 while ($fname=readdir($sdir)) 7 { 8 echo $fname."<br>"; 9 } 10 closedir($sdir); 11 } 12 13 dirlist(__DIR__); 14 ?>
計算目錄大小
1 <?php 2 /*我們可以用filesize()查看文件的大小*/ 3 /*PHP沒有提供統計目錄大小的函數,但我們可以通過前面學習的寫一個*/ 4 5 function dirsize($dir){ 6 $size=0; 7 if (!$dir_s=opendir($dir)) 8 { 9 return false; 10 } 11 while($file=readdir($dir_s)) 12 { 13 if ($file==‘.‘||$file==‘..‘) 14 { 15 continue; 16 } 17 if(is_dir($dir.‘/‘.$file)) 18 { 19 $size+=dirsize($dir.‘/‘.$file); 20 } 21 else 22 { 23 $size+=filesize($dir.‘/‘.$file); 24 } 25 26 27 } 28 return $size; 29 } 30 31 echo dirsize(__DIR__); 32 ?>
註:php5表示的最大整數為PHP_INT_MAX,這個數如果等於字節數,那麽表示的文件大小基本上等於2GB,所以如果想計算2GB以上的文件,請換PHP7
復制和刪除目錄
1 <?php 2 /*copy()函數用來賦值問價*/ 3 /*將當前目錄下的test.php復制到testcookie目錄下*/ 4 copy(‘test.php‘,‘./testcookie/test.php‘);//新的路徑名必須存在否則會報錯 5 6 /*unlink()刪除一個文件*/ 7 unlink(‘./testcookie/test.php‘); 8 9 /*創建目錄mkdir()*/ 10 mkdir(‘testdir‘); 11 12 /*PHP沒有復制目錄的函數不過我們可以用mkdir()和copy()寫一個*/ 13 function copydir($sdir,$ddir) 14 { 15 if(is_dir($sdir)) 16 { 17 if(file_exists($ddir)) 18 { 19 echo "目的路徑已經存在"; 20 return false; 21 } 22 else 23 { 24 mkdir($ddir); 25 $dir_handle=opendir($sdir); 26 while($filename=readdir($dir_handle)) 27 { 28 if($filename=="."||$filename=="..") continue; 29 if(is_dir($sdir."/".$filename)) 30 { 31 copydir($sdir."/".$filename,$ddir."/".$filename); 32 } 33 else 34 { 35 copy($sdir."/".$filename,$ddir."/".$filename); 36 } 37 } 38 39 closedir($dir_handle); 40 } 41 } 42 else 43 { 44 echo "不是目錄無法創建"; 45 return false; 46 } 47 } 48 49 50 /*rmdir()刪除目錄,該目錄必須為空否則刪除失敗*/ 51 //rmdir(‘testdir‘); 52 53 /*用rmdir()和unlink()可以寫一個級連刪除目錄的函數*/ 54 function deldir($dir) 55 { 56 if(is_dir($dir)) 57 { 58 $dir_handle=opendir($dir); 59 while($filename=readdir($dir_handle)) 60 { 61 if($filename=="."||$filename=="..") continue; 62 if(is_dir($dir."/".$filename)) 63 { 64 deldir($dir."/".$filename); 65 } 66 else 67 { 68 unlink($dir."/".$filename); 69 } 70 71 } 72 closedir($dir_handle); 73 rmdir($dir); 74 } 75 else 76 { 77 echo "不是目錄"; 78 return false; 79 } 80 } 81 deldir(‘./testcooki‘); 82 ?>
PHP-目錄的基本操作