本文是根據慕課網Jason老師的課程進行的PHP面試知識點總結和升華,如有侵權請聯系我進行洗掉,email:[email protected]
在面試中,考官往往喜歡基礎扎實的面試者,而檔案及目錄處理相關的考點,往往是大家容易忽視的一個點,今天冷月就來幫各位小伙伴們梳理一下,在面試中檔案及目錄處理相關的注意點,
回顧真題
不斷在檔案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);//關閉檔案
?>
考點分析
檔案的讀取/寫入操作,以及延伸出的目錄操作函式,其他檔案的操作,
檔案相關
打開函式:
fopen()函式
用來打開一個檔案,打開時需要指定打開模式
"r" (只讀方式打開,將檔案指標指向檔案頭)
"r+" (讀寫方式打開,將檔案指標指向檔案頭)
"w" (寫入方式打開,清除檔案內容,如果檔案不存在則嘗試創建之)
"w+" (讀寫方式打開,清除檔案內容,如果檔案不存在則嘗試創建之)
"a" (寫入方式打開,將檔案指標指向檔案末尾進行寫入,如果檔案不存在則嘗試創建之)
"a+" (讀寫方式打開,通過將檔案指標指向檔案末尾進行寫入來保存檔案內容)
"x" (創建一個新的檔案并以寫入方式打開,如果檔案已存在則回傳 FALSE 和一個錯誤)
"x+" (創建一個新的檔案并以讀寫方式打開,如果檔案已存在則回傳 FALSE 和一個錯誤)
"b" (以二進制的方式打開)
寫入函式:
fwrite(file,string,length)
file:指定寫入的檔案
string:指定寫入的內容
length:指定寫入的最大位元組數(可選)
fputs(file,string,length)
fputs() 函式是 fwrite() 函式的別名,
讀取函式:
string fread ( resource $handle , int $length )
handle:檔案系統指標,是典型地由 fopen() 創建的 resource(資源),
length:規定要讀取的最大位元組數,
fgets(file,length)
fgets() 函式從檔案指標中讀取一行,
file:必需,規定要讀取的檔案,
length:可選,規定要讀取的位元組數,默認是 1024 位元組,
fgetc(file)
fgetc() 函式從檔案指標中讀取一個字符,
關閉函式:
fclose(file)
fclose() 函式關閉一個打開檔案,
不需要fopen()打開的函式:
file_get_contents(path)
file_get_contents() 把整個檔案讀入一個字串中,
file_put_contents ( string $filename , mixed $data)
file_put_contents() 函式把一個字串寫入檔案中,
其他:
file(path)
file() 函式把整個檔案讀入一個陣列中,
陣列中的每個元素都是檔案中相應的一行,包括換行符在內,
readfile()
readfile() 函式讀取一個檔案,并寫入到輸出緩沖,
如果成功,該函式回傳從檔案中讀入的位元組數,如果失敗,該函式回傳 FALSE 并附帶錯誤資訊,您可以通過在函式名前面添加一個 '@' 來隱藏錯誤輸出,
訪問遠程檔案:
在PHP.ini中將allow_url_fopen設定為On,HTTP協議連接只能使用只讀,FTP協議可以使用只讀、只寫,
目錄相關
名稱相關:
basename(path)
basename() 函式回傳路徑中的檔案名部分,
dirname(path)
dirname() 函式回傳路徑中的目錄部分,
pathinfo(path)
pathinfo() 函式以陣列的形式回傳檔案路徑的資訊,
目錄讀取:
opendir(path):
opendir() 函式打開目錄句柄,
readdir(dir_handle):
readdir() 函式回傳目錄中下一個檔案的檔案名,
closedir(dir_handle):
closedir() 函式關閉目錄句柄,
rewinddir(dir_handle);
rewinddir() 函式重置由 opendir() 創建的目錄句柄,
目錄洗掉
rmdir(dir)
rmdir() 函式洗掉空的目錄,
目錄創建
mkdir(path)
mkdir() 函式創建目錄,
檔案大小
filesize(filename)
filesize() 函式回傳指定檔案的大小(位元組數),
目錄大小
disk_free_space(directory)
disk_free_space() 函式回傳目錄中的可用空間
disk_total_space(directory)
disk_total_space() 函式回傳指定目錄的磁盤總大小,
檔案拷貝
copy(file,to_file)
copy() 函式復制檔案,
file:必需,規定要復制的檔案,
to_file:必需,規定復制檔案的目的地,
洗掉檔案:
unlink(filename)
unlink() 函式洗掉檔案,
檔案型別
filetype(filename)
filetype() 函式回傳指定檔案或目錄的型別,
重命名檔案或目錄
rename(oldname,newname)
rename() 函式重命名檔案或目錄,
檔案截取
ftruncate(file,size)
ftruncate() 函式把檔案截斷到指定的長度,
檔案屬性
file_exists(path)
file_exists() 函式檢查檔案或目錄是否存在,
is_readable(file)
is_readable() 函式判斷指定檔案名是否可讀,
is_writable(file)
is_writable() 函式判斷指定的檔案是否可寫,
is_executable(file)
is_executable() 函式檢查指定的檔案是否可執行,
fileatime(filename)
filectime() 函式回傳指定檔案的上次 inode 修改時間,
fileatime(filename)
fileatime() 函式回傳指定檔案的上次訪問時間,
filemtime(filename)
filemtime() 函式回傳檔案內容的上次修改時間,
檔案鎖
flock(file,lock)
flock() 函式鎖定或釋放檔案,
要取得共享鎖定(讀取的程式),將 lock 設為 LOCK_SH
要取得獨占鎖定(寫入的程式),將 lock 設為 LOCK_EX
要釋放鎖定(無論共享或獨占),將 lock 設為 LOCK_UN
如果不希望 flock() 在鎖定時堵塞,則給 lock 加上 LOCK_NB
檔案指標
ftell(file)
ftell() 函式在打開檔案中的當前位置,回傳檔案指標的當前位置,
fseek(file,offset)
fseek() 函式在打開的檔案中定位,
該函式把檔案指標從當前位置向前或向后移動到新的位置,新位置從檔案頭開始以位元組數度量,
rewind(file)
rewind() 函式將檔案指標的位置倒回檔案的開頭,
一網打盡
通過PHP函式的方式對目錄進行遍歷,寫出程式
答案:
<?php
/**
* Created by 冷月小白.
* 微信公眾號: 學長冷月
*/
//1.打開目錄
//2.讀取目錄當中的檔案
//3.如果檔案型別是目錄,繼續打開目錄
//4.讀取子目錄檔案
//5.如果檔案型別是檔案,輸出檔案名稱
function loopdir($dir)
{
$handle = opendir($dir);
while (($file = readdir($handle)) !== false)
{
if ($file != '.' && $file != '..')
{
echo $file . '<br />';
if (filetype($dir . '/' . $file) == 'dir')
{
loopdir($dir . '/' . $file);
}
}
}
closedir($handle);
}
loopdir('./');
如果這篇博文有幫助到您,可以幫冷月點一個贊或者加一個關注哦!
歡迎關注我的公眾號:學長冷月,獲得獨家整理的學習資源和日常干貨推送,
如果您對我的專題內容感興趣,也可以關注我的博客:guoyu7.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80846.html
標籤:PHP
下一篇:PHP中合并陣列且key值不變
