天天看點

php面試筆記(7)-php基礎知識-檔案及目錄處理考點

php基礎知識-檔案及目錄處理

在面試中,考官往往喜歡基礎紮實的面試者,而檔案及目錄處理相關的考點,往往是大家容易忽視的一個點,今天冷月就來幫各位小夥伴們梳理一下,在面試中檔案及目錄處理相關的注意點。

01

回顧真題

不斷在檔案hello.txt頭部寫入一行"Hello world"字元串,要求代碼完整

答案:

<?php

/**

* Created by 冷月小白.

* 微信公衆号: 學長冷月

*/

$file = './hello.txt';

$handle = fopen($file,'r'); //以隻讀的方式打開檔案,指針指向檔案開頭

$content = fread($handle,filesize($file)); //将檔案全部讀出

var_dump($content);

$content = "Hello World\n" . $content;  //拼接字元串

fclose($handle); //關閉檔案

$handle = fopen($file,'w'); //以隻寫的方式打開檔案,指針指向檔案開頭

fwrite($handle,$content); //寫入

fclose($handle);//關閉檔案

?>

02

考點分析

檔案的讀取/寫入操作,以及延伸出的目錄操作函數,其他檔案的操作。

02-1
檔案相關
打開函數:
  1. fopen()函數
  2. 用來打開一個檔案,打開時需要指定打開模式
  3. "r" (隻讀方式打開,将檔案指針指向檔案頭)
  4. "r+" (讀寫方式打開,将檔案指針指向檔案頭)
  5. "w" (寫入方式打開,清除檔案内容,如果檔案不存在則嘗試建立之)
  6. "w+" (讀寫方式打開,清除檔案内容,如果檔案不存在則嘗試建立之)
  7. "a" (寫入方式打開,将檔案指針指向檔案末尾進行寫入,如果檔案不存在則嘗試建立之)
  8. "a+" (讀寫方式打開,通過将檔案指針指向檔案末尾進行寫入來儲存檔案内容)
  9. "x" (建立一個新的檔案并以寫入方式打開,如果檔案已存在則傳回 FALSE 和一個錯誤)
  10. "x+" (建立一個新的檔案并以讀寫方式打開,如果檔案已存在則傳回 FALSE 和一個錯誤)
  11. "b" (以二進制的方式打開)
寫入函數:
  1. fwrite(file,string,length)
  2. file:指定寫入的檔案
  3. string:指定寫入的内容
  4. length:指定寫入的最大位元組數(可選)
  5. fputs(file,string,length)
  6. fputs() 函數是 fwrite() 函數的别名。
3 讀取函數:
  1. string fread ( resource $handle , int $length )
  2. handle:檔案系統指針,是典型地由 fopen() 建立的 resource(資源)。
  3. length:規定要讀取的最大位元組數。
  4. fgets(file,length)
  5. fgets() 函數從檔案指針中讀取一行。
  6. file:必需。規定要讀取的檔案。
  7. length:可選。規定要讀取的位元組數。預設是 1024 位元組。
  8. fgetc(file) fgetc() 函數從檔案指針中讀取一個字元。
4 關閉函數:
  1. fclose(file)
  2. fclose() 函數關閉一個打開檔案。
  3. 不需要fopen()打開的函數:
  4. file_get_contents(path)
  5. file_get_contents() 把整個檔案讀入一個字元串中。
  6. file_put_contents ( string $filename , mixed $data)
  7. file_put_contents() 函數把一個字元串寫入檔案中。
5 通路遠端檔案:
  1. 在PHP.ini中将allow_url_fopen設定為On。HTTP協定連接配接隻能使用隻讀,FTP協定可以使用隻讀、隻寫。
6 其他:
  1. file(path)
  2. file() 函數把整個檔案讀入一個數組中。
  3. 數組中的每個元素都是檔案中相應的一行,包括換行符在内。
  4. readfile()
  5. readfile() 函數讀取一個檔案,并寫入到輸出緩沖。
  6. 如果成功,該函數傳回從檔案中讀入的位元組數。如果失敗,該函數傳回 FALSE 并附帶錯誤資訊。您可以通過在函數名前面添加一個 '@' 來隐藏錯誤輸出。
02-2
目錄相關
名稱相關:
  1. basename(path)
  2. basename() 函數傳回路徑中的檔案名部分。
  3. dirname(path)
  4. dirname() 函數傳回路徑中的目錄部分。
  5. pathinfo(path)
  6. pathinfo() 函數以數組的形式傳回檔案路徑的資訊。
目錄讀取:
  1. opendir(path):
  2. opendir() 函數打開目錄句柄。
  3. readdir(dir_handle):
  4. readdir() 函數傳回目錄中下一個檔案的檔案名。
  5. closedir(dir_handle):
  6. closedir() 函數關閉目錄句柄。
  7. rewinddir(dir_handle);
  8. rewinddir() 函數重置由 opendir() 建立的目錄句柄。
目錄删除
  1. rmdir(dir)
  2. rmdir() 函數删除空的目錄。
目錄建立
  1. mkdir(path)
  2. mkdir() 函數建立目錄。
  3. 檔案大小
  4. filesize(filename)
  5. filesize() 函數傳回指定檔案的大小(位元組數)。
目錄大小
  1. disk_free_space(directory)
  2. disk_free_space() 函數傳回目錄中的可用空間
  3. disk_total_space(directory)
  4. disk_total_space() 函數傳回指定目錄的磁盤總大小。
檔案拷貝
  1. copy(file,to_file)
  2. copy() 函數複制檔案。
  3. file:必需。規定要複制的檔案。
  4. to_file:必需。規定複制檔案的目的地。
7 删除檔案:
  1. unlink(filename)
  2. unlink() 函數删除檔案。
8 檔案類型
  1. filetype(filename)
  2. filetype() 函數傳回指定檔案或目錄的類型。
9 重命名檔案或目錄
  1. rename(oldname,newname)
  2. rename() 函數重命名檔案或目錄。
10 檔案截取
  1. ftruncate(file,size)
  2. ftruncate() 函數把檔案截斷到指定的長度。
11 檔案屬性
  1. file_exists(path)
  2. file_exists() 函數檢查檔案或目錄是否存在。
  3. is_readable(file)
  4. is_readable() 函數判斷指定檔案名是否可讀。
  5. is_writable(file)
  6. is_writable() 函數判斷指定的檔案是否可寫。
  7. is_executable(file)
  8. is_executable() 函數檢查指定的檔案是否可執行。
  9. fileatime(filename)
  10. filectime() 函數傳回指定檔案的上次 inode 修改時間。
  11. fileatime() 函數傳回指定檔案的上次通路時間。
  12. filemtime(filename)
  13. filemtime() 函數傳回檔案内容的上次修改時間。
12 檔案鎖
  1. flock(file,lock)
  2. flock() 函數鎖定或釋放檔案。
  3. 要取得共享鎖定(讀取的程式),将 lock 設為 LOCK_SH
  4. 要取得獨占鎖定(寫入的程式),将 lock 設為 LOCK_EX
  5. 要釋放鎖定(無論共享或獨占),将 lock 設為 LOCK_UN
  6. 如果不希望 flock() 在鎖定時堵塞,則給 lock 加上 LOCK_NB
13 檔案指針
  1. ftell(file)
  2. ftell() 函數在打開檔案中的目前位置。傳回檔案指針的目前位置。
  3. fseek(file,offset)
  4. fseek() 函數在打開的檔案中定位。
  5. 該函數把檔案指針從目前位置向前或向後移動到新的位置,新位置從檔案頭開始以位元組數度量。
  6. rewind(file)
  7. rewind() 函數将檔案指針的位置倒回檔案的開頭。
php面試筆記(7)-php基礎知識-檔案及目錄處理考點

一網打盡

在學習了本博文之後,冷月來測試一下大家對于知識的掌握程度。請看下面這道題:

通過PHP函數的方式對目錄進行周遊,寫出程式