1. 程式人生 > >【PHP學習】檔案程式設計——對目錄的操作

【PHP學習】檔案程式設計——對目錄的操作

什麼是檔案程式設計

所謂的檔案程式設計技術,指的就是對==檔案==或==目錄==的==增刪改查操作

可參考菜鳥教程:http://www.runoob.com/php/php-ref-filesystem.html

檔案程式設計的分類

對目錄的操作

對檔案的操作

對目錄的操作

涉及的函式:

  • **設定操作**
  1. mkdir ()建立一個目錄
  2. rmdir()刪除一個目錄
  3. rename()給目錄改名或轉移目錄
  • **查詢操作**
  1. opendir(目錄全路徑) 開啟一個目錄
  2. readdir(開啟的目錄資源) 讀取目錄中的內容
  3. closedir(開啟的目錄資源) 關閉一個開啟的目錄
  • **查詢輔助操作**
  1. ==realpath==(路徑) 將給定的路徑轉換為絕對路徑地址
  2. ==basename==(路徑) 返回當前給定路徑的基礎檔案(或資料夾)名部分
  3. ==dirname==(路徑) 返回當前給定路徑的目錄部分
  4. is_dir(全路徑) 判斷一個給定檔案是否是一個目錄

 

    mkdir ()

      注意點:

  1. 0777是資料夾許可權、表示使用者可讀可寫可執行。
  2. 把第三個引數設定為true,就可以遞迴的去建立目錄及目錄下的子目錄【遞迴建立目錄就是目錄下還有目錄的意思】
//建立dir1目錄和dir2目錄
$re = mkdir('./dir1');
var_dump( $re ); echo '<br/>';   //bool(true)

$re = mkdir('F:/home/class/day13/code/dir2');
var_dump( $re );      //bool(true)

//遞迴建立目錄dir3/dir3_1/dir3_1_1
//$re = mkdir('./dir3/dir3_1/dir3_1_1');//預設情況下是不支援的
//var_dump( $re ); 

$re = mkdir('./dir3/dir3_1/dir3_1_1', 0777, true);//把第三個引數設定為true,就可以遞迴的去建立目錄及目錄下的子目錄
var_dump( $re ); 

     rename()

       注意點;我們還可以使用rename將某個目錄轉移到另外一個目錄中;

#將dir1的目錄名改為dir100
$re = rename('./dir1', './dir100');
var_dump( $re ); 

#將dir2目錄轉移到dir3目錄中,並且重新命名為dir200
$re = rename('./dir2', './dir3/dir200');

      rmdir()

  1. 我們可以使用rmdir刪除某個目錄;

      2.刪除的目錄必須是沒有內容的目錄才能成功刪除;

     opendir() 開啟一個目錄 、

      readdir() 讀取目錄中的內容

#開啟一個目錄
$op = opendir('./demo');
var_dump( $op ); echo '<br/>';

#讀取目錄內容
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第1次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第2次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第3次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第4次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第5次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第6次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第7次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第8次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第9次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第10次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第11次執行readdir的輸出
$rd = readdir($op);
var_dump( $rd ); echo '<br/>';//第12次執行readdir的輸出

輸出效果

注意點:為什麼出現 .和..資料夾呢??

因為每個非根盤目錄下都有這兩個檔案。

在cmd下用dir命令隨便查詢一個非根盤目錄都可以看到.與..資料夾

realpath()將給定的路徑轉換為絕對路徑地址

下面出現了的:

var_dump(realpath("./"));     //將相對路徑轉化成絕對路徑:

./:當前相對路徑

dirname==(路徑) 返回當前給定路徑的目錄部分

   總結:dirname將會獲得一個路徑的目錄部分。與realpath()有很大的區別,下圖可以驗證:

dirname()經常會用到在專案中需要熟練掌握