版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
企業(yè)網(wǎng)站開發(fā)PHP版講師:王靖整理課件課程目標(biāo)第9章文件系統(tǒng)與操作9第10章PHP交互10第11章Cookie與Session11第12章圖像處理12整理課件目錄與文件第5章講述了數(shù)組的工作原理、訪問方法和常用函數(shù)。但是數(shù)組畢竟是存在于內(nèi)存中的,不能長久的保存供以后使用,這就要求程序員對數(shù)組以及內(nèi)存中有用的變量進(jìn)行保存。數(shù)據(jù)的保存有很多形式,通過這一章的學(xué)習(xí),就能找到其中的一種解決方案。在本章中,為了提高大家的動手能力,有些目錄或文件并沒有建立,我們可以根據(jù)系統(tǒng)提示的錯誤,找到解決的方法。整理課件操作目錄目錄在文件系統(tǒng)中是一個重要的概念,專業(yè)的術(shù)語把其解釋成存儲在磁盤上的文件及其他目錄的索引,也可以將其視為一個文件夾,在文件夾中,可以放置其他的文件或文件夾,從而使得計算機的文件系統(tǒng)井井有條。最頂層的目錄稱為根目錄,在PHP中用“/”或“\\”代表?!?”代表當(dāng)前目錄,“..”代表上級目錄。整理課件目錄操作打開目錄關(guān)閉目錄讀取目錄遍歷目錄創(chuàng)建目錄刪除目錄整理課件判斷是否是目錄函數(shù)is_dir()用來判斷是否是目錄,其語法結(jié)構(gòu)如下:is_dir($path)參數(shù)$path為打開目錄的路徑,如果文件名存在并且為目錄,則返回true。如果file
是一個相對路徑,則按照當(dāng)前工作目錄檢查其相對路徑。。
【范例】利用函數(shù)is_dir(),判斷images是否是目錄。整理課件判斷是否是目錄<?php$file="images";if(is_dir($file)){echo("$fileisadirectory");}else{echo("$fileisnotadirectory");}?>
整理課件判斷文件是否存在在對一個文件進(jìn)行訪問之前,一般需要先判斷文件是否存在,因為用不恰當(dāng)?shù)姆绞皆L問一個并不存在的文件,就會導(dǎo)致錯誤。在PHP中,file_exists()函數(shù)能夠檢查文件是否存在,其結(jié)構(gòu)形式如下:file_exists($string)。參數(shù)$string為一個指向文件或目錄的字符型變量,如果文件或目錄存在,則返回值true,反之返回false。
【范例】如果網(wǎng)頁需要調(diào)用,首先判斷文件是否存在。如果不存在,發(fā)出警告“指定的文件不存在”,如果存在,輸出“可以調(diào)用文件”。
整理課件打開目錄函數(shù)opendir()用來打開一個目錄,其語法結(jié)構(gòu)如下:opendir(string$path)參數(shù)$path為打開目錄的路徑,函數(shù)將返回一個打開目錄的句柄,用于存儲當(dāng)前的目錄資源,打開目錄前像打開文件一樣,要先檢測目錄是否存在,如果打開一個不存在的目錄,程序?qū)⒊鲥e。
【范例】利用函數(shù)opendir(),打開D盤下的images目錄。整理課件打開目錄<?php$dir="images";if(@opendir($dir)){echo"獲取目錄句柄成功!";}else{echo"打開目錄錯誤";}?>整理課件關(guān)閉目錄關(guān)閉目錄利用函數(shù)closedir(),其語法結(jié)構(gòu)為:closedir($dp)參數(shù)dp為使用函數(shù)opendir()打開的目錄返回的資源對象。
整理課件打開目錄失敗時釋放資源<?php$dir="images";If($dir_handle=@opendir($dir)){//執(zhí)行目錄操作echo“獲取目錄句柄成功!”;//釋放句柄closedir($dir_handle);}else{echo“打開目錄錯誤”;}?>整理課件讀取目錄在PHP中使用readdir()函數(shù)讀取目錄中的文件并返回文件名,其語法結(jié)構(gòu)如下:readdir($dp)參數(shù)dp為使用函數(shù)opendir()打開的目錄返回的資源對象,函數(shù)返回目錄下的文件名。下面通過示例講解讀取目錄的方法。
【范例】利用函數(shù)opendir(),打開D盤下的images目錄,并讀取其下面的文件。整理課件讀取目錄<?php$dir="images";if($dir2=@opendir($dir)){echo"獲取目錄句柄成功!";if(@readdir($dir2)){echo"獲取成功!";}else{echo"獲取失敗";}}else{echo"打開目錄錯誤";}?>整理課件遍歷目錄一個目錄下往往會存放很多文件,如果想查看某個目錄下存放的文件,可通過遍歷目錄,顯示目錄下的所有文件信息。目錄就是一個典型的樹形結(jié)構(gòu),實現(xiàn)遍歷的方法很多,這里通過實例講解目錄的遍歷?!痉独坷眠f歸實現(xiàn)遍歷D盤images文件夾下所有的文件信息。整理課件遍歷目錄<?phpif($handle=@opendir('txt2')){echo"文件:\n";while(false!==($file=readdir($handle))){if($file!="."&&$file!=".."){echo"$file\n";}}closedir($handle);}else{echo"文件夾打不開";}?>
整理課件創(chuàng)建目錄在備份當(dāng)天數(shù)據(jù)或存放用戶注冊信息時,經(jīng)常需要創(chuàng)建目錄,mkdir()函數(shù)可以實現(xiàn)目錄的創(chuàng)建,其結(jié)構(gòu)形式如下:mkdir(string$dirname,int$mode)參數(shù)$dirname為字符變量,內(nèi)容為想要創(chuàng)建目錄的名稱。參數(shù)$mode為整型變量,默認(rèn)是0777,表示創(chuàng)建模式,執(zhí)行此函數(shù)將在指定目錄下創(chuàng)建新的目錄,mode
在Windows下被忽略
。整理課件新建目錄<?php//帶有錯誤檢測的新建目錄if(@mkdir("temp",0700)){echo“創(chuàng)建目錄成功!”;}else{echo“創(chuàng)建目錄失??!”;}//新建目錄htmlmkdir("html",0777);?>【范例】在chengxu文件夾內(nèi)創(chuàng)建存放照片的文件夾pic。
整理課件刪除目錄PHP提供一個rmdir()函數(shù)可以用來刪除目錄,其結(jié)構(gòu)形式如下:rmdir(string$dirname)參數(shù)$dirname為字符變量,為要刪除目錄的名稱?!痉独縿h除D盤images的目錄。整理課件刪除目錄<?phpif(@rmdir("temp")){echo“刪除目錄成功”;}else{echo“刪除目錄失敗”;}?>刪除目錄要注意的問題:以上代碼嘗試刪除根目錄下名為“temp”的目錄。目錄刪除成功將返回TRUE,如果刪除失敗將返回FALSE,并顯示錯誤信息,可以使用“@”符號來抑制錯誤信息的輸出。整理課件取得當(dāng)前工作目錄此函數(shù)用于獲取當(dāng)前的工作目錄,通過對返回值的判斷,確定當(dāng)前操作的目錄是否正確。代碼如下所示。<?php$path=getcwd();if($path==false){echo“取當(dāng)前目錄失?。 ?}else{//顯示當(dāng)前目錄echo$path;}?>獲取當(dāng)前工作目錄時要注意的問題:此函數(shù)運行時將返回一個字符串,記錄當(dāng)前目錄情況。失敗將返回FALSE。整理課件改變當(dāng)前目錄回FALSE。通過操作此函數(shù),可以改變當(dāng)前目錄,以定位到可用資源,改變當(dāng)前目錄的演示代碼如下所示。<?php//顯示當(dāng)前目錄echogetcwd()."<br>";//改變當(dāng)前目錄chdir('html');//顯示當(dāng)前目錄echogetcwd()."<br>";?>在使用chdir()函數(shù)時,要注意以下問題:本例中的chdir()將當(dāng)前目錄更改為“html”。成功返回TRUE,失敗將返整理課件從目錄句柄中讀取條目使用readdir()函數(shù),會從目錄句柄中讀取下一個文件的文件名。配合while循環(huán)可以實現(xiàn)對目錄的遍歷,代碼如下所示。<?php
$dir=“html”;
$handle=opendir($dir);
if($handle!=false){
echo‘本目錄包含:<br>’;
/*這是正確地遍歷目錄方法*/
while(false!==($file=readdir($handle))){
echo$file.’<br>’;
}
closedir($handle);
}else{echo“打開目錄錯誤!”;}
?>整理課件列出指定路徑中的文件和目錄scandir()函數(shù)返回一個數(shù)組,其中包含指定路徑中的文件和目錄。若成功,則返回一個數(shù)組,若失敗,則返回false。如果directory
不是目錄,則返回布爾值false并生成一條E_WARNING級的錯誤。scandir(directory,sort,context)
directory必需。規(guī)定要掃描的目錄。sort可選。規(guī)定排列順序。默認(rèn)是0(升序)。如果是1,則為降序。context可選。規(guī)定目錄句柄的環(huán)境。context是可修改目錄流的行為的一套選項。<?php$dir='html';$dir1=scandir($dir);$dir2=scandir($dir,1);if($dir1==false){echo“讀取目錄失??!”;}else{print_r($dir1);}print_r($dir2);?>整理課件關(guān)閉目錄句柄在使用完opendir()打開的目錄句柄后,應(yīng)使用closedir()進(jìn)行關(guān)閉,以節(jié)省服務(wù)器資源,代碼如下所示。<?php$dir="html";//檢查$dir是否為目錄if(is_dir($dir)){if($dir_handle=opendir($dir)){$directory=readdir($dir_handle);closedir($dir_handle);}}?>整理課件directory類為了方便用戶對目錄的操作,PHP提供了一個類似使用面向?qū)ο髾C制的函數(shù),它實際上相當(dāng)于使用readdir()、rewind()、closedir()三個函數(shù)實現(xiàn)遍歷目錄的功能,dir(directory)
<?php$dir=dir("html");echo"當(dāng)前句柄:".$dir->handle."<br>";echo"路徑:".$dir->path."<br>";while(false!==($entry=$dir->read())){echo$entry."<br>";}$dir->close();?>整理課件操作文件的一般方法上一節(jié)學(xué)習(xí)了使用相關(guān)目錄函數(shù)對目錄進(jìn)行新建、打開、刪除、讀取及關(guān)閉等操作。在這一節(jié)中將學(xué)習(xí)操作文件的一般步驟,即:打開、讀取、寫入、關(guān)閉。而本節(jié)很多知識與上一節(jié)是相通的,如目錄的打開與文件的打開,只不過它們使用的函數(shù)不一樣而已。整理課件訪問文件屬性在進(jìn)行處理文件之前,有時需要知道文件的一些屬性,如文件的大小、類型、修改時間、訪問時間和文件的權(quán)限等。PHP提供了一些函數(shù)可直接獲取文件的屬性。函數(shù)名作用參數(shù)及返回值filesize(string)獲取文件的大小參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整型變量,返回文件的大小。如果出錯,則返回false。函數(shù)參數(shù)不能為遠(yuǎn)程文件,返回結(jié)果會被緩存filetype(string)獲取文件的類型參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為字符型變量,可能出現(xiàn)的值有fifo,char,dir,block,link,file和unknown,返回值會被緩存filemtime(string)獲取文件修改的時間參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整型變量,返回文件的修改時間fileatime(string)獲取文件的訪問時間參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整型變量,內(nèi)容為文件的訪問時間fileperms(string)獲取文件的權(quán)限參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整型變量,內(nèi)容為文件相應(yīng)的權(quán)限,同其他這一類的函數(shù)一樣,參數(shù)不能為遠(yuǎn)程文件,另外返回結(jié)果同樣會被緩存整理課件打開文件讀取文件中的數(shù)據(jù)之前,必須要先打開一個文件,這是其他文件操作的基礎(chǔ)。PHP使用fopen()函數(shù)打開一個文件,其結(jié)構(gòu)形式如下:resourcefopen(string$filename,string$mode)其中參數(shù)filename是所要打開的文件名,可以打開本地文件,其形式為“scheme://…”。也可打開遠(yuǎn)程Web服務(wù)器上的文件,其形式為“http://”。如果其形式為以“ftp://...”開頭,則其表示打開的文件是遠(yuǎn)程FTP服務(wù)器上的。參數(shù)mode是要打開文件的方式,參數(shù)$mode是可以接收的模式。代碼如下一頁表所示,其中代碼“b”和代碼“t”僅作用于Windows系統(tǒng)。
整理課件模式說明r只讀方式打開,將文件指針指向文件頭r+讀寫方式打開,將文件指針指向文件頭w只寫入方式打開,將文件指針指向文件頭并將文件大小截為0。如果文件不存在,則嘗試創(chuàng)建一個新文件w+寫入方式打開,將文件指針指向文件頭并將文件大小截為0。如果文件不存在,則嘗試創(chuàng)建一個新文件a只寫入方式打開,將文件指針指向文件末尾。如果文件不存在,則嘗試創(chuàng)建一個新文件a+寫入方式打開,將文件指針指向文件末尾。如果文件不存在,則嘗試創(chuàng)建一個新文件x只創(chuàng)建和打開本地文件只用于寫入,從文件起點開始。如果文件已經(jīng)存在,則fopen()返回假,而且PHP發(fā)送一個警告。如果文件不存在,則創(chuàng)建它x+創(chuàng)建和打開本地文件進(jìn)行讀取和寫入,從文件起點開始。如果文件已經(jīng)存在,fopen()返回假,而且PHP發(fā)送一個警告。如果文件不存在,則創(chuàng)建它b默認(rèn)模式,與其他模式配合使用,用于對二進(jìn)制文件和文本文件區(qū)別對待的文件系統(tǒng)。對于Windows是必需的t與其他文件配合使用,代表Windows文本文件。把行結(jié)束符\n轉(zhuǎn)換為\r\n。與b模式配合使用以提高可移植性整理課件fopen()返回一個值,這個值包含一個文件句柄的整數(shù),用來向執(zhí)行文件操作的函數(shù)標(biāo)識該文件。有時這個值被稱為文件指針,指針就形如內(nèi)存地址中的一個個小房間的門號。如果PHP打開文件失敗,那么這個值是false。利用常用的打開文件的方式打開本地文件和遠(yuǎn)程文件。
整理課件打開文件在學(xué)習(xí)打開文件之前先看一段代碼。代碼如下所示。<?php//打開本地文件$handle=fopen("html/cache.txt","r");//打開本地二進(jìn)制文件$handle=fopen("html/title.png","wb");//打開遠(yuǎn)程文件$handle=fopen("/","r");//打開帶有用戶驗證的FTP$handle=fopen("ftp://user:password@/cache.txt","w");?>整理課件讀取文件文件操作中最頻繁的應(yīng)該是讀取操作,所以在讀取文件時一定要注意優(yōu)化代碼,這樣才能從代碼層面提高程序質(zhì)量。
代碼里的fread(),就是基本的讀取文件函數(shù),它的原型如下所示stringfread(int$handle,int$length)<?php$filename="html/cache.txt";//找出要讀取的文件$handle=fopen($filename,"r");//使用fopen()函數(shù)打開文件$contents=fread($handle,filesize($filename));//使用fread()函數(shù)讀取文件fclose($handle);//使用fclose()函數(shù)關(guān)閉文件句柄?>整理課件讀取文件從文件中讀取10個字節(jié):<?php$file=fopen("test.txt","r");fread($file,"10");fclose($file);?>讀取整個文件:<?php$file=fopen("test.txt","r");fread($file,filesize("test.txt"));fclose($file);?>整理課件寫入文件寫入文件操作具有重大的意義,軟件運行時計算出來的數(shù)據(jù),用戶提交、修改的信息,通常都需要保存下來,供以后使用。而把數(shù)據(jù)寫入文件,就是其中的解決方案之一。為了方便理解,先看一段簡單的寫入文件的程序,代碼如下所示。<?php//使用fopen()函數(shù)打開一個文件句柄$handle=fopen(“html/cache.txt”,”w”);//使用fwrite()函數(shù)向文件句柄內(nèi)寫入內(nèi)容fwrite($handle,”添加文字到文件中”);//使用fclose()函數(shù),關(guān)閉文件句柄fclose($handle);?>代碼里的fwrite(),就是寫入文件函數(shù),它的原型如下所示。intfwrite(resource$handle,string$string[,int$length])整理課件關(guān)閉文件關(guān)閉文件正確的說法是關(guān)閉一個已經(jīng)打開的文件句柄,fclose()只有唯一的一個參數(shù),即文件句柄。使用fopen()或fscokopen()成功打開的句柄,都可以使用其來關(guān)閉。<?php$handle=fopen("html/cache.txt","r");//操作文件fclose($handle);?>整理課件文件的基本操作在上一節(jié)中學(xué)習(xí)了操作文件的一般步驟,以及一些基礎(chǔ)的文件系統(tǒng)函數(shù)。本節(jié)是在上節(jié)內(nèi)容的基礎(chǔ)上學(xué)習(xí)更多的文件系統(tǒng)函數(shù)及操作文件的技巧。整理課件在當(dāng)前目錄新建文件新建文件使用的函數(shù)還是fopen(),只不過是通過對fopen()的$mode值的選擇來完成。在編寫程序時,很多情況下要求某個文件的存在,作為程序的運行條件,這時就可以使用下面的代碼:<?php$handle=fopen(‘model.txt’,’w’);fclose($handle);?>使用fopen()函數(shù)新建文件時,要注意以下幾個問題:這段簡單的代碼完成了在當(dāng)前目錄新建一個名為“model.txt”文件,注意如果fopen()的第一個參數(shù)是“html/model.txt”時,程序會在當(dāng)前目錄的子目錄“html”,創(chuàng)建“model.txt”文件。即使再短的打開文件操作,也應(yīng)該使用關(guān)閉句柄函數(shù)。新建文件時,很容易因為文件存在或權(quán)限問題而失敗,所以在新建文件前,應(yīng)進(jìn)行相關(guān)的檢查。整理課件刪除文件使用unlink()函數(shù),可以刪除程序運行時產(chǎn)生的臨時文件。unlink()函數(shù)有1個參數(shù),即要刪除文件的路徑與文件名。注意:使用unlink()函數(shù)刪除文件時,如果刪除成功,函數(shù)將返回TRUE值,如果刪除失敗,函數(shù)將返回FALSE值。<?php//定義一個變量,保存文件名$file="html/cache.txt";//刪除參數(shù)指定的文件unlink($file);?>整理課件新建臨時文件很多情況下,變量會被保存下來,但等程序運行完成后,這些保存變量的文件就要被刪除以節(jié)省服務(wù)器空間。但這個過程很麻煩的,程序員要記錄過程中產(chǎn)生的文件的名稱,還要使用函數(shù)對其進(jìn)行刪除操作。而PHP為了使這一工作能夠快速有效的完成,為程序員提供了一個函數(shù),即:tmpfile()函數(shù),函數(shù)的演示代碼如下所示。<?php$temp_handle=tmpfile();//建立一個臨時文件句柄fwrite($temp_handle,"寫入到臨時文件");//向臨時文件內(nèi)寫入內(nèi)容fseek($temp_handle,0);//指文件指針指向文件頭echofread($temp_handle,1024);//讀取從文件頭開始的1024個字符并顯示fclose($temp_handle);//下邊的操作將刪除生成的臨時文件?>整理課件新建具有唯一文件名的文件tempnam()函數(shù)與tempfile()函數(shù)的使用方法都是一樣的,唯一區(qū)別的tempnam()函數(shù)將產(chǎn)生一個具有唯一文件名的文件。<?php//使用tempnam()函數(shù)建立一個具有唯一文件名的臨時文件$file=tempnam("html","tempnam");//使用fopen()函數(shù)打開臨時文件$handle=fopen($tmpfname,"r+");//使用fwrite()函數(shù)向臨時文件寫入內(nèi)容fwrite($handle,"這是tempnam()函數(shù)產(chǎn)生的文件");//關(guān)閉文件包柄fclose($handle);//使用完成后,刪除臨時文件unlink($file);?>整理課件復(fù)制文件復(fù)雜文件就是根據(jù)源文件的內(nèi)容,建立一個擁有同樣內(nèi)容的新文件。在不想破壞操作文件時,可以通過復(fù)制源文件,對新產(chǎn)生的文件進(jìn)行操作。復(fù)制文件使用copy()函數(shù)實現(xiàn),演示代碼如下所示。<?php$file="html/cache.txt";//定義一個變量,保存文件名$targetFile="html/copyCache.txt";//使用copy()函數(shù)復(fù)制文件,并使用if判斷語句檢查成功情況if(copy($file,$targetFile)==TRUE){echo"復(fù)制文件成功!";}else{echo"復(fù)制文件失敗!";}//可以直接使用copy()函數(shù)copy("html/cache.txt","html/cache/tempCache.txt");?>整理課件移動、重命名文件或目錄使用rename()函數(shù),可以移動、重新命名一個已經(jīng)存在的文件或目錄,rename(oldname,newname)函數(shù)重命名文件或目錄
。<?php//定義一個變量,保存文件名$file="html/cache.txt";$rename="html/renameCache.txt";//使用rename()函數(shù)重命名一個文件if(rename($file,$rename)==TRUE){echo"重命名文件成功!";}else{echo"重命名文件失敗!";}//使用rename()函數(shù)移動文件,并改名rename("html/renameCache.txt","html/a/2.txt");rename("html","cache");//使用rename()函數(shù)重命名目錄rename("b","cache/b");//使用rename()函數(shù)移動目錄到目標(biāo)目錄?>整理課件寫入文件前面介紹過使用fwrite()函數(shù)寫入文件的方法,在文件系統(tǒng)函數(shù)中,還可以使用fputs()、fputcsv()、file_put_contents()函數(shù)來把內(nèi)容寫入文件。fputs()是fwrite()函數(shù)的別名,這兩個函數(shù)的實現(xiàn)的功能是一樣的,fputcsv()函數(shù)可以把數(shù)組按指定的規(guī)則寫入文件,而file_put_contents(),可以把一個字符串直進(jìn)寫入文件。這3個函數(shù)各有特點,在實際應(yīng)用中,就根據(jù)情況選擇使用。整理課件寫入文件fwrite(file,string,length)寫入文件使用fwrite()函數(shù),其有3個參數(shù),第1個參數(shù)是必選參數(shù),其值是使用fopen()函數(shù),以及類似函數(shù)打開的文件句柄。第2個參數(shù)也是必選參數(shù),其值是要寫入文件的字符串變量。第3個參數(shù)是可選參數(shù),如果指定了這個參數(shù)的值,fwrite()函數(shù)將在寫入指定長度字符串后結(jié)束運行。整理課件寫入文件<?php$file=fopen("test.txt","w");echofwrite($file,"HelloWorld.Testing!");fclose($file);?>整理課件將字符串寫入文件使用file_put_contents()函數(shù),可以把一個字符串變量寫入文件。file_put_contents()函數(shù)與fwrite()函數(shù)的不同之處在于,fwrite()函數(shù)需要一個fopen()或類似函數(shù)創(chuàng)建的句柄,file_put_contents()只需要運行函數(shù)本身。file_put_contents(file,data,mode)file必需。規(guī)定要寫入數(shù)據(jù)的文件。如果文件不存在,則創(chuàng)建一個新文件。data可選。規(guī)定要寫入文件的數(shù)據(jù)。可以是字符串、數(shù)組或數(shù)據(jù)流。mode可選。規(guī)定如何打開/寫入文件。可能的值:FILE_USE_INCLUDE_PATH/FILE_APPEND/LOCK_EX
提示:使用FILE_APPEND可避免刪除文件中已有的內(nèi)容。注釋:本函數(shù)可安全用于二進(jìn)制對象。整理課件將字符串寫入文件<?phpechofile_put_contents("test.txt","HelloWorld.Testing!");?>************************************************************<?php//使用定義一個字符串$content="使用file_put_contents()函數(shù)寫入的內(nèi)容";//定義一個數(shù)組$array=array("這是使用","file_put_contents()函數(shù)","寫入的數(shù)組內(nèi)容");//使用file_put_contents()函數(shù)把字符串寫入文件file_put_contents("html/contents.txt",$content);//使用file_put_contents()函數(shù)把數(shù)組寫入文件file_put_contents("html/arraycontents.txt",$array);?>整理課件文件的讀取與指針文件讀取函數(shù)分為兩種,
一種是把文件全部讀入內(nèi)存的函數(shù),如file_get_contents()函數(shù);
一種是依靠文件內(nèi)部的指針,來讀取文件內(nèi)容的函數(shù),如fread()函數(shù)。
這兩種函數(shù)都有其優(yōu)缺點,在實際應(yīng)用中,可以根據(jù)情況選擇。整理課件把整個文件讀入到數(shù)組中file()函數(shù)讀取文件后,返回1個數(shù)組,其中數(shù)組的每個單元對應(yīng)著文件的1行(包括換符)。file()函數(shù)不僅可以讀取本地文件,還可以從網(wǎng)頁中讀取信息。file(path[,include_path])path必需。規(guī)定要讀取的文件。include_path可選。如果也想在include_path中搜尋文件的話,可以將該參數(shù)設(shè)為“1”。下面演示file()函數(shù)讀取文件的方法,整理課件把整個文件讀入到數(shù)組中<?php//使用file()函數(shù)讀取html目錄下的$array=file("html/cache.txt");//遍歷file()函數(shù)返回的數(shù)組foreach($arrayas$line){echo$line."<br>";}//使用file()函數(shù)讀取網(wǎng)頁內(nèi)容$webPage=file("/");//遍歷file()函數(shù)返回的數(shù)組foreach($webPageas$line){echo$line;}?>整理課件將文件讀取到字符串使用file_get_contents()函數(shù),可以把參數(shù)指定的文件,整個讀取到1個字符串變量中清單file_get_contents()函數(shù)讀取文件的方法<?php//使用file_get_contents()函數(shù)讀取html目錄下的$fileString=file_get_contents("html/cache.txt");//顯示file_get_contents()函數(shù)返回的變量echo$fileString;//使用file_get_contents()函數(shù)讀取網(wǎng)頁內(nèi)容$webPage=file_get_contents("/");//顯示file_get_contents()函數(shù)返回的變量echo$webPage;?>整理課件獲取、設(shè)置文件內(nèi)部指針位置文件內(nèi)部指針,是文件操作系統(tǒng)內(nèi)部的數(shù)據(jù)指針,用于標(biāo)注文件當(dāng)前的讀寫位置。使用ftell()函數(shù)可以查看當(dāng)前文件內(nèi)部指針的位置。使用fseek()函數(shù),則可以快速的把文件的內(nèi)部指針,指向參數(shù)指定的位置。ftell()函數(shù)只有1個參數(shù),其值是使用fopen()或類似函數(shù)創(chuàng)建的句柄。ftell()函數(shù)運行后,將返回當(dāng)前文件指針的位置。fseek()函數(shù)有3個參數(shù),第1個參數(shù)是必選參數(shù),其值是使用fopen()函數(shù),以及類似函數(shù)打開的文件句柄。第2個參數(shù)也是必選參數(shù),其值是數(shù)字,代表指針移動到文件處的位置。整理課件從文件指針處讀取字符使用fgetc()函數(shù),可以從當(dāng)前文件指針處,讀取一個字符并返回。下面演示fgetc()函數(shù)的使用方法,代碼如清單所示整理課件從文件指針處讀取數(shù)據(jù)使用fgets()函數(shù),可以讀取文件指針指向的當(dāng)前行,并返回一個記錄當(dāng)前行內(nèi)容的字符串。fgets()函數(shù)包括2個參數(shù),第1個參數(shù)是必選參數(shù),其值是fopen()或類似函數(shù)創(chuàng)建的文件句柄,第2個參數(shù)是可選參數(shù),其值用于指定讀取文件的大小。整理課件從文件指針處讀取數(shù)據(jù)并過濾HTML使用fgetss()函數(shù),可以從文件指針處讀取一行數(shù)據(jù),并過濾掉文件中的HTML與PHP標(biāo)記<?php//使用fopen()打開一個網(wǎng)頁$fh=fopen("/","r");//結(jié)合while循環(huán)讀取文件while(!feof($fh)){//當(dāng)文件指針指向文件尾時,結(jié)束循環(huán)$str=fgetss($fh,5000);//使用fgetss()函數(shù)讀取當(dāng)前行內(nèi)容到$str變量,每行指定讀取5000個字節(jié)
echo$str;//顯示fgetss()讀取的文件內(nèi)容}//使用fclose()關(guān)閉句柄fclose($fh);?>整理課件重置文件指針的位置使用rewind()函數(shù),可以重置當(dāng)前文件的指針位置,使指針返回到文件頭。<?php//使用fopen()打開一個文件$fh=fopen("config.ini","r");echo"顯示當(dāng)前指針:".ftell($fh)."<br>";echo"使用fseek重定位指針到100";fseek($fh,100);echo"顯示當(dāng)前指針:".ftell($fh)."<br>";echo"使用rewind()函數(shù)重置文件指針";rewind($fh);echo"顯示當(dāng)前指針:".ftell($fh)."<br>";?>整理課件文件尾部指針測試使用feof()函數(shù),可以檢查當(dāng)前文件的內(nèi)部指針,是否已經(jīng)處于文件尾部。feof()函數(shù)經(jīng)常與while()循環(huán)語句配合,實現(xiàn)讀取文件。feof()函數(shù)據(jù)的演示代碼如下所示。<?php//使用fopen()函數(shù)打開一個文件$fh=fopen("html/arraycontents.txt","r");//結(jié)合while循環(huán)讀取文件while(!feof($fh)){//使用feof()函數(shù)測試文件指針是否到達(dá)文件尾部}//使用fclose()關(guān)閉句柄fclose($fh);?>整理課件文件的上傳與下載文件的上傳與下載,都需要使用文件系統(tǒng)函數(shù)來完成。本節(jié)將介紹在文件上傳與下載過程中,使用到的文件系統(tǒng)函數(shù)。處理上傳文件的函數(shù)是move_uploaded_file(),實現(xiàn)文件下載的函數(shù)是fpassthru()。整理課件處理上傳文件使用HTML產(chǎn)生上傳文件變量,產(chǎn)生上傳文件變量的表單,只能把要上傳的文件,上傳到系統(tǒng)的臨時文件夾,要想把這個臨時文件保存到指定的位置,需要使用move_uploaded_file()函數(shù)。move_uploaded_file(file,newloc)
第1個參數(shù)是必選參數(shù),規(guī)定要移動的文件,其值是一個合法的上傳文件名.第2個參數(shù)是必選參數(shù),規(guī)定文件的新位置,其值是由目錄和文件名組成的字符串,代表臨時文件存儲的位置和文件名。注釋:本函數(shù)僅用于通過HTTPPOST上傳的文件。注意:如果目標(biāo)文件已經(jīng)存在,將會被覆蓋。整理課件讀取文件到輸出緩沖區(qū)使用readfile()函數(shù),可以讀取參數(shù)指定的文件到輸出緩沖區(qū),被輸入到緩沖區(qū)的內(nèi)容,將在瀏覽器上顯示。<?php//定義一個變量,存放要讀取的文件名$filename="html/contents.txt";//如果讀取的文件是JPG格式的圖片文件,可以使用header()函數(shù)指定輸出文件的格式header("Content-type:image/jpeg");readfile($filename);//文件文件,直接使用readfile()函數(shù)讀取并輸出到緩沖區(qū)readfile($filename);?>整理課件將文件輸出到緩沖區(qū)使用fpassthru()函數(shù),可以把參數(shù)指向的文件,輸出到緩沖區(qū)。<?php//定義一個變量存放要打開的文件$image="html/a.jpg";$fh=fopen($image,"rb");//讀取二進(jìn)制文件時,應(yīng)使用b標(biāo)志//如果讀取的文件是類似JPG格式的二進(jìn)制文件,可以使用header()函數(shù)指定輸出文件的格式//如果文件文件,直接使用fpassthru()函數(shù)讀取并輸出到緩沖區(qū)header("Content-type:image/jpeg");fpassthru($fh);//關(guān)閉文件句柄close($fh);?>整理課件實現(xiàn)文件下載實現(xiàn)文件下載,需要兩個方面的條件:一是向瀏覽器發(fā)送正確的報頭,二是把文件輸出到緩沖區(qū)。本小節(jié)使用readfile()函數(shù),來實現(xiàn)文件的下載功能<?php//定義一個變量存放要打開的文件$image="html/a.jpg";//下載的文件名$newName="user.jpg";header("Cache-control:private");header("Content-type:image/jpeg");//設(shè)置要下載的文件類型header("Content-Length:".filesize($image));//設(shè)置要下載文件的文件大小header("Content-Disposition:attachment;filename=$newName");//設(shè)置要下載文件的文件名readfile($image);?>整理課件文件屬性的操作文件屬性包括文件的大小、修改時間、所有者、權(quán)限、類型等信息。通過了解文件的屬性,可以幫助程序員判斷文件現(xiàn)在的狀態(tài),對文件實現(xiàn)更細(xì)致的管理。整理課件獲取文件統(tǒng)計信息使用stat()函數(shù),可以獲取參數(shù)指向文件的統(tǒng)計信息,下面演示stat()函數(shù)的使用方法,代碼如清單所示。清單stat()函數(shù)使用方法<?php//定義一個存儲文件名的變量$filename="html/contents.txt";//使用stat()函數(shù)取得統(tǒng)計信息,并返回數(shù)組$stat=stat($filename);//輸出統(tǒng)計信息foreach($statas$key=>$value){echo"鍵名:$key:單元值:$value<br>";}?>整理課件通過文件句柄獲取文件統(tǒng)計信息使用fstat()函數(shù),可以獲取文件統(tǒng)計信息。<?php//使用fopen()打開一個文件$fp=fopen("html/contents.txt","r");//使用fstat()函數(shù)取得統(tǒng)計信息,并返回數(shù)組$fstat=fstat($fp);//關(guān)閉文件fclose($fp);//輸出統(tǒng)計表foreach($fstatas$key=>$value){echo"鍵名:$key:單元值:$value<br>";}?>整理課件獲取文件相關(guān)信息雖然可以使用stat()、fstat()函數(shù),取得文件屬性,但是每次使用文件屬性時,都需要對數(shù)組進(jìn)行訪問。PHP提供了更加簡捷的方法,來訪問文件的某一個文件屬性。這些函數(shù)主要包括:fileatime()函數(shù),用于取得文件的上次訪問時間。filectime()函數(shù),用于取得文件的inode修改時間。filegroup()函數(shù),用于取得文件的組。fileinode()函數(shù),用于取得文件的inode。filemtime()函數(shù),用于取得文件修改時間。fileowner()函數(shù),取得文件的所有者。fileperms()函數(shù),取得文件的權(quán)限。filesize()函數(shù),取得文件大小。filetype()函數(shù),取得文件類型。整理課件修改文件訪問和修改時間使用touch()函數(shù),可以改變指定文件的訪問和修改時間。<?php//定義一個存儲文件名的變量$filename="html/conteents.txt";//使用當(dāng)前時間,作為文件的最后訪問和修改時間touch($filename);echo"{$filename}的最后訪問時間是:".date("FdYH:i:s.",fileatime($filename));echo"<br>{$filename}的修改時間是:".date("FdYH:i:s.",filemtime($filename));//使用指定時間,作為文件的最后訪問和修改時間touch($filename,time()-1000);clearstatcache();//清除文件屬性緩沖echo"<br>{$filename}的最后訪問時間是:".date("FdYH:i:s.",fileatime($filename));echo"<br>{$filename}的修改時間是:".date("FdYH:i:s.",filemtime($filename));//使用指定時間,作為文件的最后訪問時間clearstatcache();//清除文件屬性緩沖touch($filename,time()-2000,time()+2000);echo"<br>{$filename}的最后訪問時間是:".date("FdYH:i:s.",fileatime($filename));echo"<br>{$filename}的修改時間是:".date("FdYH:i:s.",filemtime($filename));?>整理課件改變文件所屬的組使用chgrp()函數(shù)可以改變文件所屬的組。chgrp()函數(shù)的演示代碼如下所示。<?php//定義一個存有文件名稱的變量$filename="html/contents.txt";if(chgrp($filename,0)){//使用chgrp()函數(shù)改變文件組,成功返回TRUE,失敗返回FALSEecho"更改文件組成功.";}else{echo"更改文件組失敗."; }?>注意:只有超級用戶可以任意修改文件的組。整理課件改變文件所有者使用chown()函數(shù)可以改變文件的所有者。chown()函數(shù)的演示代碼如下所示。<?php//定義一個存有文件名稱的變量$filename="html/contents.txt";if(chown($filename,"user")){//使用chown()函數(shù)改變所有者,成功返回TRUE,失敗返回FALSEecho"更改文件所有者成功.";}else{echo"更改文件所有者失敗."; }?>注意:只有超級用戶可以任意修改文件的所有者。整理課件改變文件權(quán)限文件權(quán)限可以設(shè)定當(dāng)前文件,被所有者、組用戶和公共用戶訪問的權(quán)限。其值由4個八進(jìn)制數(shù)表示,第1個八進(jìn)制數(shù)是0,其后每1個八進(jìn)制數(shù)由3個數(shù)字相加來表示訪問權(quán)限:1表示文件可執(zhí)行,2表示文件可寫,4表示文件可讀。文件權(quán)限第1個數(shù)表示所有者對文件的訪問權(quán)限,如果所有者對文件有全部訪問權(quán)限,那么其值應(yīng)該是1+2+4=7。文件權(quán)限第2個數(shù)表示組用戶對文件的訪問權(quán)限,如果組用戶對文件有可讀、可執(zhí)行的權(quán)限,那么其值應(yīng)該是1+4=5。文件權(quán)限第3個數(shù)表示公共用戶對文件的訪問權(quán)限,如果公共用戶對文件只有可讀權(quán)限,那么其值應(yīng)該是1。整理課件文件操作的錯誤處理在文件操作過程中,由于權(quán)限、路徑、文件名等不確定的因素,文件系統(tǒng)函數(shù)在操作文件時,會產(chǎn)生錯誤,為了避免錯誤產(chǎn)生,應(yīng)在操作文件之前,就對文件進(jìn)檢測。本節(jié)主要介紹用于文件系統(tǒng)錯誤處理的函數(shù)。整理課件判斷給定文件名是否是目錄由于文件與目錄的操作函數(shù)是不能通用的,所以在不確定給定的變量是文件名或目錄的情況下,可以使用is_dir()函數(shù)進(jìn)行檢測,整理課件判斷給定文件名是否可執(zhí)行使用is_executable()函數(shù),可以檢測指定文件是否為可執(zhí)行文件,如果測試文件存在,并可以執(zhí)行,函數(shù)將返回TRUE,否則返回FALSE.<?php//建立一個判斷文件是否可以執(zhí)行的函數(shù)functionisexec($file){if(is_executable($file)){echo"文件{$file}可執(zhí)行<br>";}else{echo"文件{$file}不可執(zhí)行<br>";}}//定義存儲文件名的變量$file="html/contents.txt";//使用函數(shù)判斷這些變量isexec($file);?>整理課件判斷給定文件名是否是文件使用is_file()函數(shù),可以檢測指定文件是否為文件,如果是文件函數(shù)將返回TRUE,否則返回FALSE,is_file()函數(shù)演示代碼如清單所示。整理課件判斷指定文件是否可讀服務(wù)器端的腳本程序,訪問文件系統(tǒng)時,使用的一般都是公共用戶。由于公共用戶的權(quán)限會受到一些限制,當(dāng)文件權(quán)限不確定的情況下,可以使用is_readable()函數(shù),測試指定文件是否可讀。整理課件判斷文件是否是通過HTTPPOST上傳的使用HTML表單通過POST上傳文件時,出于安全方面的考慮,可以使用is_uploaded_file()對上傳的文件進(jìn)行檢測,is_uploaded_file()有1個必選參數(shù),其值是文件上傳變量的臨時文件名。下面演示is_uploaded_file()函數(shù)的使用方法,is_uploaded_file()函數(shù)運行后,如果臨時文件是使用權(quán)HTTPPOST方式上傳的,將返回TRUE值,否則返回FALSE值。整理課件判斷給定的文件名是否可寫當(dāng)文件權(quán)限不確定的情況下,可以使用is_writable()函數(shù),測試指定文件是否可寫。<?php//建立一個判斷文件名是否可寫的函數(shù)functiontestwrite($file){if(is_writable($file)){echo"{$file}可寫<br>";}else{echo"{$file}不可寫<br>";}}//定義存儲文件名的變量$file1="html/contents.txt";$file1="html/arraycontents.txt";//使用函數(shù)判斷這些變量testwrite($file1);testwrite($file1);?>整理課件檢查文件或目錄是否存在在使用文件系統(tǒng)函數(shù)時,除了權(quán)限問題可以引起錯誤外,要操作的文件或目錄是否存在,也經(jīng)常引發(fā)錯誤。在PHP中,可以使用file_exists()函數(shù),檢查指定目錄或文件是否存在。整理課件路徑與
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村振興:人才振興是關(guān)鍵
- 中考百日誓師大會學(xué)生演講稿
- 監(jiān)理工程師年終工作總結(jié)范文
- 售后派遣合同范例
- 天津新房合同模板
- 展廳布展施工合同范例
- 工會福利招標(biāo)合同范例
- 地方購房合同范例
- 外墻粉刷采購合同范例
- 室外玩具購買安裝合同范例
- 儲罐施工方案33
- 擬鈣劑在慢性腎臟病患者中應(yīng)用的專家共識簡介
- 消毒供應(yīng)中心技能考核操作評分標(biāo)準(zhǔn)
- 蓮藕的貯藏保鮮技術(shù)
- 油氣地質(zhì)儲量計算及評價
- 【2023高血壓患者服藥依從性研究(論文)2800字】
- 村衛(wèi)生室2023年度績效考核評分細(xì)則(基本公共衛(wèi)生服務(wù))
- 寬帶接入合同
- 陰陽五行學(xué)說 PowerPoint 演示文稿 全面版【PPT課件】
- 測定總糖原始記錄
- 混凝土強度自動評定表格
評論
0/150
提交評論