




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、企企 業(yè)業(yè) 網網 站站 開開 發(fā)發(fā)PHP版版講師:王靖講師:王靖課課 程程 目目 標標第第9章章 文件系統(tǒng)與操作文件系統(tǒng)與操作9第10章 PHP交互10第11章 Cookie與Session11第12章 圖像處理12目錄與文件目錄與文件v第5章講述了數(shù)組的工作原理、訪問方法和常用函數(shù)。但是數(shù)組畢竟是存在于內存中的,不能長久的保存供以后使用,這就要求程序員對數(shù)組以及內存中有用的變量進行保存。數(shù)據(jù)的保存有很多形式,通過這一章的學習,就能找到其中的一種解決方案。在本章中,為了提高大家的動手能力,有些目錄或文件并沒有建立,我們可以根據(jù)系統(tǒng)提示的錯誤,找到解決的方法。 操作目錄操作目錄v目錄在文件系統(tǒng)中
2、是一個重要的概念,專業(yè)的術語把其解釋成存儲在磁盤上的文件及其他目錄的索引,也可以將其視為一個文件夾,在文件夾中,可以放置其他的文件或文件夾,從而使得計算機的文件系統(tǒng)井井有條。最頂層的目錄稱為根目錄,在PHP中用“/”或“”代表。“.”代表當前目錄,“.”代表上級目錄。目錄操作目錄操作 打開目錄 關閉目錄 讀取目錄 遍歷目錄 創(chuàng)建目錄 刪除目錄 判斷是否是目錄判斷是否是目錄 v函數(shù)函數(shù)is_dir()用來判斷是否是目錄,其語法結構如下:用來判斷是否是目錄,其語法結構如下:vis_dir($path)v參數(shù)參數(shù)$path為打開目錄的路徑,如果文件名存在并且為為打開目錄的路徑,如果文件名存在并且為目
3、錄,則返回目錄,則返回 true。假設。假設 file 是一個相對路徑,則按是一個相對路徑,則按照當前工作目錄檢查其相對路徑。照當前工作目錄檢查其相對路徑。 【范例】利用函數(shù)is_dir(),判斷images是否是目錄。判斷是否是目錄判斷是否是目錄 v 判斷文件是否存在判斷文件是否存在 v在對一個文件進行訪問之前,一般需要先判斷文件是否在對一個文件進行訪問之前,一般需要先判斷文件是否存在,因為用不恰當?shù)姆绞皆L問一個并不存在的文件,存在,因為用不恰當?shù)姆绞皆L問一個并不存在的文件,就會導致錯誤。在就會導致錯誤。在PHP中,中,file_exists()函數(shù)能夠檢查函數(shù)能夠檢查文件是否存在,其結構形
4、式如下:文件是否存在,其結構形式如下:vfile_exists($string)。v參數(shù)參數(shù)$string為一個指向文件或目錄的字符型變量,如為一個指向文件或目錄的字符型變量,如果文件或目錄存在,則返回值果文件或目錄存在,則返回值true,反之返回,反之返回false。 【范例】如果網頁需要調用php.txt,首先判斷文件是否存在。如果不存在,發(fā)出警告“指定的文件不存在”,如果存在,輸出“可以調用文件”。 打開目錄打開目錄 v函數(shù)函數(shù)opendir()用來打開一個目錄,其語法結構如下:用來打開一個目錄,其語法結構如下:vopendir(string $path)v參數(shù)參數(shù)$path為打開目錄的
5、路徑,函數(shù)將返回一個打開目為打開目錄的路徑,函數(shù)將返回一個打開目錄的句柄,用于存儲當前的目錄資源,打開目錄前像打錄的句柄,用于存儲當前的目錄資源,打開目錄前像打開文件一樣,要先檢測目錄是否存在,如果打開一個不開文件一樣,要先檢測目錄是否存在,如果打開一個不存在的目錄,程序將出錯。存在的目錄,程序將出錯。 【范例】利用函數(shù)opendir(),打開D盤下的images目錄。打開目錄打開目錄v關閉目錄關閉目錄 v關閉目錄利用函數(shù)關閉目錄利用函數(shù)closedir(),其語法結構為:,其語法結構為:vclosedir($dp)v參數(shù)參數(shù)dp為使用函數(shù)為使用函數(shù)opendir()打開的目錄返回的資源對打開
6、的目錄返回的資源對象。象。 打開目錄失敗時釋放資源打開目錄失敗時釋放資源v 讀取目錄讀取目錄 v在在PHP中使用中使用readdir()函數(shù)讀取目錄中的文件并返回文函數(shù)讀取目錄中的文件并返回文件名,其語法結構如下:件名,其語法結構如下:vreaddir($dp)v參數(shù)參數(shù)dp為使用函數(shù)為使用函數(shù)opendir()打開的目錄返回的資源對打開的目錄返回的資源對象,函數(shù)返回目錄下的文件名。下面通過示例講解讀取象,函數(shù)返回目錄下的文件名。下面通過示例講解讀取目錄的方法。目錄的方法。 【范例】利用函數(shù)opendir(),打開D盤下的images目錄,并讀取其下面的文件。讀取目錄讀取目錄 v 遍歷目錄遍歷
7、目錄 v一個目錄下往往會存放很多文件,如果想查看某個目一個目錄下往往會存放很多文件,如果想查看某個目錄下存放的文件,可通過遍歷目錄,顯示目錄下的所錄下存放的文件,可通過遍歷目錄,顯示目錄下的所有文件信息。目錄就是一個典型的樹形結構,實現(xiàn)遍有文件信息。目錄就是一個典型的樹形結構,實現(xiàn)遍歷的方法很多,這里通過實例講解目錄的遍歷。歷的方法很多,這里通過實例講解目錄的遍歷?!痉独坷眠f歸實現(xiàn)遍歷D盤images文件夾下所有的文件信息。遍歷目錄遍歷目錄 v 創(chuàng)建目錄創(chuàng)建目錄 v在備份當天數(shù)據(jù)或存放用戶注冊信息時,經常需要創(chuàng)建在備份當天數(shù)據(jù)或存放用戶注冊信息時,經常需要創(chuàng)建目錄,目錄,mkdir()函數(shù)
8、可以實現(xiàn)目錄的創(chuàng)建,其結構形式函數(shù)可以實現(xiàn)目錄的創(chuàng)建,其結構形式如下:如下:vmkdir(string $dirname,int $mode)v參數(shù)參數(shù)$dirname為字符變量,內容為想要創(chuàng)建目錄的名為字符變量,內容為想要創(chuàng)建目錄的名稱。參數(shù)稱。參數(shù)$mode為整型變量,默認是為整型變量,默認是 0777,表示創(chuàng)建模表示創(chuàng)建模式式,執(zhí)行此函數(shù)將在指定目錄下創(chuàng)建新的目錄執(zhí)行此函數(shù)將在指定目錄下創(chuàng)建新的目錄,mode 在在 Windows 下被忽略下被忽略 。 新建目錄新建目錄v【范例】 在chengxu文件夾內創(chuàng)建存放照片的文件夾pic。 刪除目錄刪除目錄 vPHP提供一個提供一個rmdir(
9、)函數(shù)可以用來刪除目錄,其結構函數(shù)可以用來刪除目錄,其結構形式如下:形式如下:vrmdir(string $dirname)v參數(shù)參數(shù)$dirname為字符變量,為要刪除目錄的名稱。為字符變量,為要刪除目錄的名稱。【范例】刪除D盤images的目錄。 刪除目錄刪除目錄v v 刪除目錄要注意的問題:v 以上代碼嘗試刪除根目錄下名為“temp的目錄。v 目錄刪除成功將返回TRUE,如果刪除失敗將返回FALSE,并顯示錯誤信息,可以使用“”符號來抑制錯誤信息的輸出。取得當前工作目錄取得當前工作目錄v 此函數(shù)用于獲取當前的工作目錄,通過對返回值的判斷,確定當前操作的目錄是否正確。代碼如下所示。v v
10、獲取當前工作目錄時要注意的問題:v 此函數(shù)運行時將返回一個字符串,記錄當前目錄情況。v 失敗將返回FALSE。改變當前目錄改變當前目錄v 回FALSE。通過操作此函數(shù),可以改變當前目錄,以定位到可用資源,改變當前目錄的演示代碼如下所示。v ?phpv / 顯示當前目錄v echo getcwd() . ;v /改變當前目錄v chdir(html);v / 顯示當前目錄v echo getcwd().;v ?v 在使用chdir()函數(shù)時,要注意以下問題:v 本例中的chdir()將當前目錄更改為“html”。v 成功返回TRUE,失敗將返從目錄句柄中讀取條目從目錄句柄中讀取條目v 使用rea
11、ddir()函數(shù),會從目錄句柄中讀取下一個文件的文件名。配合while循環(huán)可以實現(xiàn)對目錄的遍歷,代碼如下所示。v ?php$dir = “html”;$handle = opendir($dir);if ($handle != false) echo 本目錄包含:;/* 這是正確地遍歷目錄方法 */while(false != ($file = readdir($handle)echo $file.;closedir($handle);elseecho “打開目錄錯誤!”;?列出指定路徑中的文件和目錄列出指定路徑中的文件和目錄v scandir() 函數(shù)返回一個數(shù)組,其中包含指定路徑中的文件和
12、目錄。若成功,則返回一個數(shù)組,若失敗,則返回 false。假設 directory 不是目錄,則返回布爾值 false 并生成一條 E_WARNING 級的錯誤。v scandir(directory,sort,context) directory必需。規(guī)定要掃描的目錄。sort可選。規(guī)定排列順序。默認是 0 (升序)。如果是 1,則為降序。context可選。規(guī)定目錄句柄的環(huán)境。context 是可修改目錄流的行為的一套選項。v 關閉目錄句柄關閉目錄句柄v 在使用完opendir()打開的目錄句柄后,應使用closedir()進行關閉,以節(jié)省服務器資源,代碼如下所示。v directory類
13、類v 為了方便用戶對目錄的操作,PHP提供了一個類似使用面向對象機制的函數(shù),它實際上相當于使用readdir()、rewind()、closedir()三個函數(shù)實現(xiàn)遍歷目錄的功能,dir(directory) v handle.;v echo 途徑:.$dir-path.;v while(false != ($entry = $dir-read()v echo $entry.;v v $dir-close();v ?操作文件的一般方法操作文件的一般方法v上一節(jié)學習了使用相關目錄函數(shù)對目錄進行新建、翻開、刪除、讀取及關閉等操作。在這一節(jié)中將學習操作文件的一般步驟,即:翻開、讀取、寫入、封鎖。而本
14、節(jié)很多知識與上一節(jié)是相通的,如目錄的打開與文件的打開,只不過它們使用的函數(shù)不一樣而已。訪問文件屬性訪問文件屬性在進行處理文件之前,有時需要知道文件的一些屬性,如文件的大小、類型、修改時間、在進行處理文件之前,有時需要知道文件的一些屬性,如文件的大小、類型、修改時間、訪問時間和文件的權限等。訪問時間和文件的權限等。PHP提供了一些函數(shù)可直接獲取文件的屬性。提供了一些函數(shù)可直接獲取文件的屬性。函函 數(shù)數(shù) 名名作作 用用參數(shù)及返回值參數(shù)及返回值filesize(string)獲取文件獲取文件的大小的大小參數(shù)參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整為一個指向文件或目錄的字符型
15、變量。函數(shù)的返回值為整型變量,型變量,返回文件的大小返回文件的大小。如果出錯,則返回。如果出錯,則返回false。函數(shù)參數(shù)不能為。函數(shù)參數(shù)不能為遠程文件,返回結果會被緩存遠程文件,返回結果會被緩存filetype(string)獲取文件獲取文件的類型的類型參數(shù)參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為字為一個指向文件或目錄的字符型變量。函數(shù)的返回值為字符型變量,可能出現(xiàn)的值有符型變量,可能出現(xiàn)的值有fifo,char,dir,block,link,file和和unknown,返回值會被緩存,返回值會被緩存filemtime(string)獲取文件獲取文件修改的時修改的時間
16、間參數(shù)參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整型變量,型變量,返回文件的修改時間返回文件的修改時間fileatime(string)獲取文件獲取文件的訪問時的訪問時間間參數(shù)參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整型變量,內容為型變量,內容為文件的訪問時間文件的訪問時間fileperms(string)獲取文件獲取文件的權限的權限參數(shù)參數(shù)string為一個指向文件或目錄的字符型變量。函數(shù)的返回值為整為一個指向文件或目錄的字符型變量。函數(shù)的返回值為
17、整型變量,內容為文件相應的權限,同其他這一類的函數(shù)一樣,參數(shù)不型變量,內容為文件相應的權限,同其他這一類的函數(shù)一樣,參數(shù)不能為遠程文件,另外返回結果同樣會被緩存能為遠程文件,另外返回結果同樣會被緩存打開文件打開文件 v讀取文件中的數(shù)據(jù)之前,必須要先打開一個文件,這是其他文件操作的基礎。PHP使用fopen()函數(shù)打開一個文件,其結構形式如下:vresource fopen (string $filename, string $mode)v其中參數(shù)filename是所要打開的文件名,可以打開本地文件,其形式為“scheme:/”。也可打開遠程Web服務器上的文件,其形式為“.”。如果其形式為以“
18、ftp:/.”開頭,則其表示打開的文件是遠程FTP服務器上的。參數(shù)mode是要打開文件的方式,參數(shù)$mode是可以接收的模式。代碼如下一頁表所示,其中代碼“b和代碼“t僅作用于Windows系統(tǒng)。 模模 式式說說 明明r只讀方式打開,將文件指針指向文件頭r+讀寫方式打開,將文件指針指向文件頭w只寫入方式打開,將文件指針指向文件頭并將文件大小截為0。如果文件不存在,則嘗試創(chuàng)建一個新文件w+寫入方式打開,將文件指針指向文件頭并將文件大小截為0。如果文件不存在,則嘗試創(chuàng)建一個新文件a只寫入方式打開,將文件指針指向文件末尾。如果文件不存在,則嘗試創(chuàng)建一個新文件a+寫入方式打開,將文件指針指向文件末尾。
19、如果文件不存在,則嘗試創(chuàng)建一個新文件x只創(chuàng)建和打開本地文件只用于寫入,從文件起點開始。如果文件已經存在,則fopen()返回假,而且PHP發(fā)送一個警告。如果文件不存在,則創(chuàng)建它x+創(chuàng)建和打開本地文件進行讀取和寫入,從文件起點開始。如果文件已經存在,fopen()返回假,而且PHP發(fā)送一個警告。如果文件不存在,則創(chuàng)建它b默認模式,與其他模式配合使用,用于對二進制文件和文本文件區(qū)別對待的文件系統(tǒng)。對于Windows是必需的t與其他文件配合使用,代表Windows文本文件。把行結束符n轉換為rn。與b模式配合使用以提高可移植性vfopen()返回一個值,這個值包含一個文件句柄的整數(shù),用來向執(zhí)行文件操
20、作的函數(shù)標識該文件。有時這個值被稱為文件指針,指針就形如內存地址中的一個個小房間的門號。如果PHP打開文件失敗,那么這個值是false。利用常用的打開文件的方式打開本地文件和遠程文件。 打開文件打開文件v 在學習打開文件之前先看一段代碼。代碼如下所示。v 讀取文件讀取文件v 文件操作中最頻繁的應該是讀取操作,所以在讀取文件時一定要注意優(yōu)化代碼,這樣才能從代碼層面提高程序質量。代碼里的fread(),就是基本的讀取文件函數(shù),它的原型如下所示string fread ( int $handle, int $length )v 讀取文件讀取文件v從文件中讀取 10 個字節(jié): vv讀取整個文件:v寫入
21、文件寫入文件v 寫入文件操作具有重大的意義,軟件運行時計算出來的數(shù)據(jù),用戶提交、修改的信息,通常都需要保存下來,供以后使用。而把數(shù)據(jù)寫入文件,就是其中的解決方案之一。為了方便理解,先看一段簡單的寫入文件的程序,代碼如下所示。v v 代碼里的fwrite(),就是寫入文件函數(shù),它的原型如下所示。v int fwrite ( resource $handle, string $string , int $length )關閉文件關閉文件v關閉文件正確的說法是關閉一個已經打開的文件句柄,fclose()只有唯一的一個參數(shù),即文件句柄。使用fopen()或fscokopen()成功打開的句柄,都可以使
22、用其來關閉。v文件的基本操作文件的基本操作v在上一節(jié)中學習了操作文件的一般步驟,以及一些基礎的文件系統(tǒng)函數(shù)。本節(jié)是在上節(jié)內容的基礎上學習更多的文件系統(tǒng)函數(shù)及操作文件的技巧。在當前目錄新建文件在當前目錄新建文件v 新建文件使用的函數(shù)還是新建文件使用的函數(shù)還是fopen(),只不過是通過對,只不過是通過對fopen()的的$mode值的選值的選擇來完成。在編寫程序時,很多情況下要求某個文件的存在,作為程序的運擇來完成。在編寫程序時,很多情況下要求某個文件的存在,作為程序的運行條件,這時就可以使用下面的代碼:行條件,這時就可以使用下面的代碼:v v 使用使用fopen()函數(shù)新建文件時,要注意以下幾
23、個問題:函數(shù)新建文件時,要注意以下幾個問題:v 這段簡單的代碼完成了在當前目錄新建一個名為這段簡單的代碼完成了在當前目錄新建一個名為“model.txt文件,注意如文件,注意如果果fopen()的第一個參數(shù)是的第一個參數(shù)是“html/model.txt時,程序會在當前目錄的子目時,程序會在當前目錄的子目錄錄“html”,創(chuàng)建,創(chuàng)建“model.txt文件。文件。v 即使再短的打開文件操作,也應該使用關閉句柄函數(shù)。即使再短的打開文件操作,也應該使用關閉句柄函數(shù)。v 新建文件時,很容易因為文件存在或權限問題而失敗,所以在新建文件前,新建文件時,很容易因為文件存在或權限問題而失敗,所以在新建文件前,
24、應進行相關的檢查。應進行相關的檢查。刪除文件刪除文件v 使用unlink()函數(shù),可以刪除程序運行時產生的臨時文件。unlink()函數(shù)有1個參數(shù),即要刪除文件的路徑與文件名。v 留意:使用unlink()函數(shù)刪除文件時,如果刪除成功,函數(shù)將返回TRUE值,如果刪除失敗,函數(shù)將返回FALSE值。v 新建臨時文件新建臨時文件v 很多情況下,變量會被保存下來,但等程序運行完成后,這些保存變量的文件就要被刪除以節(jié)省服務器空間。但這個過程很麻煩的,程序員要記錄過程中產生的文件的名稱,還要使用函數(shù)對其進行刪除操作。而PHP為了使這一工作能夠快速有效的完成,為程序員提供了一個函數(shù),即:tmpfile()函
25、數(shù),函數(shù)的演示代碼如下所示。v 新建具有唯一文件名的文件新建具有唯一文件名的文件v tempnam()函數(shù)與tempfile()函數(shù)的使用方法都是一樣的,唯一區(qū)別的tempnam()函數(shù)將產生一個具有唯一文件名的文件。v 復制文件復制文件v復雜文件就是根據(jù)源文件的內容,建立一個擁有同樣內容的新文件。在不想破壞操作文件時,可以通過復制源文件,對新產生的文件進行操作。復制文件使用copy()函數(shù)實現(xiàn),演示代碼如下所示。v挪動、重命名文件或目錄挪動、重命名文件或目錄v 使用rename()函數(shù),可以移動、重新命名一個已經存在的文件或目錄,rename(oldname,newname)函數(shù)重命名文件或
26、目錄 。v 寫入文件寫入文件v前面介紹過使用fwrite()函數(shù)寫入文件的方法,在文件系統(tǒng)函數(shù)中,還可以使用fputs()、fputcsv()、file_put_contents()函數(shù)來把內容寫入文件。vfputs()是fwrite()函數(shù)的別名,這兩個函數(shù)的實現(xiàn)的功能是一樣的,fputcsv()函數(shù)可以把數(shù)組按指定的規(guī)則寫入文件,而file_put_contents(),可以把一個字符串直進寫入文件。這3個函數(shù)各有特點,在實際應用中,就根據(jù)情況選擇使用。寫入文件寫入文件vfwrite(file,string,length)寫入文件使用寫入文件使用fwrite()函數(shù),函數(shù),其有其有3個參數(shù)
27、,第個參數(shù),第1個參數(shù)是必選參數(shù),其值是使用個參數(shù)是必選參數(shù),其值是使用fopen()函數(shù),以及類似函數(shù)打開的文件句柄。第函數(shù),以及類似函數(shù)打開的文件句柄。第2個參個參數(shù)也是必選參數(shù),其值是要寫入文件的字符串變量。第數(shù)也是必選參數(shù),其值是要寫入文件的字符串變量。第3個參數(shù)是可選參數(shù),如果指定了這個參數(shù)的值,個參數(shù)是可選參數(shù),如果指定了這個參數(shù)的值,fwrite()函數(shù)將在寫入指定長度字符串后結束運行。函數(shù)將在寫入指定長度字符串后結束運行。寫入文件寫入文件v將字符串寫入文件將字符串寫入文件v 使用file_put_contents()函數(shù),可以把一個字符串變量寫入文件。file_put_cont
28、ents()函數(shù)與fwrite()函數(shù)的不同之處在于,fwrite()函數(shù)需要一個fopen()或類似函數(shù)創(chuàng)建的句柄,file_put_contents()只需要運行函數(shù)本身。v file_put_contents(file,data,mode)v file 必需。規(guī)定要寫入數(shù)據(jù)的文件。如果文件不存在,則創(chuàng)建一個新文件。 v data 可選。規(guī)定要寫入文件的數(shù)據(jù)??梢允亲址?、數(shù)組或數(shù)據(jù)流。 v mode 可選。規(guī)定如何打開/寫入文件。可能的值:v FILE_USE_INCLUDE_PATH/FILE_APPEND /LOCK_EX v 提示:運用 FILE_APPEND 可避免刪除文件中已有
29、的內容。v 注釋:本函數(shù)可安全用于二進制對象。將字符串寫入文件將字符串寫入文件v v *v 文件的讀取與指針文件的讀取與指針v文件讀取函數(shù)分為兩種,一種是把文件全部讀入內存的函數(shù),如file_get_contents()函數(shù);一種是依靠文件內部的指針,來讀取文件內容的函數(shù),如fread()函數(shù)。這兩種函數(shù)都有其優(yōu)缺點,在實際應用中,可以根據(jù)情況選擇。把整個文件讀入到數(shù)組中把整個文件讀入到數(shù)組中vfile()函數(shù)讀取文件后,返回1個數(shù)組,其中數(shù)組的每個單元對應著文件的1行包括換符)。file()函數(shù)不僅可以讀取本地文件,還可以從網頁中讀取信息。vfile(path, include_path)v
30、path 必需。規(guī)定要讀取的文件。 vinclude_path 可選。如果也想在 include_path 中搜尋文件的話,可以將該參數(shù)設為 “1”。 v下面演示file()函數(shù)讀取文件的方法,把整個文件讀入到數(shù)組中把整個文件讀入到數(shù)組中v ?phpv /使用file()函數(shù)讀取html目錄下的cache.txtv $array = file(html/cache.txt);v /遍歷file()函數(shù)返回的數(shù)組v foreach($array as $line)v echo $line.;v v /使用file()函數(shù)讀取網頁內容v $webPage = file(/);v /遍歷file()
31、函數(shù)返回的數(shù)組v foreach($webPage as $line)v echo $line;?將文件讀取到字符串將文件讀取到字符串使用file_get_contents()函數(shù),可以把參數(shù)指定的文件,整個讀取到1個字符串變量中清單 file_get_contents()函數(shù)讀取文件的方法 獲取、設置文件內部指針位置獲取、設置文件內部指針位置v文件內部指針,是文件操作系統(tǒng)內部的數(shù)據(jù)指針,用于標注文件當前的讀寫位置。使用ftell()函數(shù)可以查看當前文件內部指針的位置。使用fseek()函數(shù),則可以快速的把文件的內部指針,指向參數(shù)指定的位置。vftell()函數(shù)只有1個參數(shù),其值是使用fope
32、n()或類似函數(shù)創(chuàng)建的句柄。ftell()函數(shù)運行后,將返回當前文件指針的位置。fseek()函數(shù)有3個參數(shù),第1個參數(shù)是必選參數(shù),其值是使用fopen()函數(shù),以及類似函數(shù)打開的文件句柄。第2個參數(shù)也是必選參數(shù),其值是數(shù)字,代表指針移動到文件處的位置。從文件指針處讀取字符從文件指針處讀取字符v使用fgetc()函數(shù),可以從當前文件指針處,讀取一個字符并返回。下面演示fgetc()函數(shù)的使用方法,代碼如清單所示從文件指針處讀取數(shù)據(jù)從文件指針處讀取數(shù)據(jù)v使用fgets()函數(shù),可以讀取文件指針指向的當前行,并返回一個記錄當前行內容的字符串。fgets()函數(shù)包括2個參數(shù),第1個參數(shù)是必選參數(shù),其
33、值是fopen()或類似函數(shù)創(chuàng)建的文件句柄,第2個參數(shù)是可選參數(shù),其值用于指定讀取文件的大小。從文件指針處讀取數(shù)據(jù)并過濾從文件指針處讀取數(shù)據(jù)并過濾HTMLv 使用fgetss()函數(shù),可以從文件指針處讀取一行數(shù)據(jù),并過濾掉文件中的HTML與PHP標記v 重置文件指針的位置重置文件指針的位置v 使用rewind()函數(shù),可以重置當前文件的指針位置,使指針返回到文件頭。?phpv /使用fopen()打開一個文件v $fh = fopen(config.ini,r);v echo 顯示當前指針:.ftell($fh).;v echo 使用fseek重定位指針到100;v fseek($fh,100
34、);v echo 顯示當前指針:.ftell($fh).;v echo 使用rewind()函數(shù)重置文件指針;v rewind($fh);v echo 顯示當前指針:.ftell($fh).;v ?文件尾部指針測試文件尾部指針測試v 使用feof()函數(shù),可以檢查當前文件的內部指針,是否已經處于文件尾部。feof()函數(shù)經常與while()循環(huán)語句配合,實現(xiàn)讀取文件。feof()函數(shù)據(jù)的演示代碼如下所示。v 文件的上傳與下載文件的上傳與下載v文件的上傳與下載,都需要使用文件系統(tǒng)函數(shù)來完成。本節(jié)將介紹在文件上傳與下載過程中,使用到的文件系統(tǒng)函數(shù)。處理上傳文件的函數(shù)是move_uploaded_f
35、ile(),實現(xiàn)文件下載的函數(shù)是fpassthru()。處理上傳文件處理上傳文件v使用HTML產生上傳文件變量,產生上傳文件變量的表單,只能把要上傳的文件,上傳到系統(tǒng)的臨時文件夾,要想把這個臨時文件保存到指定的位置,需要使用move_uploaded_file()函數(shù)。vmove_uploaded_file(file,newloc) v第1個參數(shù)是必選參數(shù),規(guī)定要移動的文件,其值是一個合法的上傳文件名.v第2個參數(shù)是必選參數(shù),規(guī)定文件的新位置,其值是由目錄和文件名組成的字符串,代表臨時文件存儲的位置和文件名。v注釋:本函數(shù)僅用于通過 POST 上傳的文件。v留意:如果目標文件已經存在,將會被覆
36、蓋。讀取文件到輸出緩沖區(qū)讀取文件到輸出緩沖區(qū)v 使用readfile()函數(shù),可以讀取參數(shù)指定的文件到輸出緩沖區(qū),被輸入到緩沖區(qū)的內容,將在瀏覽器上顯示。v 將文件輸出到緩沖區(qū)將文件輸出到緩沖區(qū)v 使用fpassthru ()函數(shù),可以把參數(shù)指向的文件,輸出到緩沖區(qū)。實現(xiàn)文件下載實現(xiàn)文件下載v 實現(xiàn)文件下載,需要兩個方面的條件:一是向瀏覽器發(fā)送正確的報頭,二是把文件輸出到緩沖區(qū)。本小節(jié)使用readfile()函數(shù),來實現(xiàn)文件的下載功能文件屬性的操作文件屬性的操作v文件屬性包括文件的大小、修改時間、所有者、權限、類型等信息。通過了解文件的屬性,可以幫助程序員判斷文件現(xiàn)在的狀態(tài),對文件實現(xiàn)更細致的
37、管理。獲取文件統(tǒng)計信息獲取文件統(tǒng)計信息v 使用stat()函數(shù),可以獲取參數(shù)指向文件的統(tǒng)計信息,下面演示stat()函數(shù)的使用方法,代碼如清單所示。v 清單 stat()函數(shù)使用方法 v $value)v echo 鍵名:$key:單元值:$value;v v ?通過文件句柄獲取文件統(tǒng)計信息通過文件句柄獲取文件統(tǒng)計信息v 使用fstat()函數(shù),可以獲取文件統(tǒng)計信息。v $value)v echo 鍵名:$key:單元值:$value;v v ?獲取文件相關信息獲取文件相關信息v 雖然可以使用stat()、fstat()函數(shù),取得文件屬性,但是每次使用文件屬性時,都需要對數(shù)組進行訪問。PHP提
38、供了更加簡捷的方法,來訪問文件的某一個文件屬性。這些函數(shù)主要包括:v fileatime()函數(shù),用于取得文件的上次訪問時間。v filectime()函數(shù),用于取得文件的inode修改時間。v filegroup()函數(shù),用于取得文件的組。v fileinode()函數(shù),用于取得文件的inode。v filemtime()函數(shù),用于取得文件修改時間。v fileowner()函數(shù),取得文件的所有者。v fileperms()函數(shù),取得文件的權限。v filesize()函數(shù),取得文件大小。v filetype()函數(shù),取得文件類型。修改文件訪問和修改時間修改文件訪問和修改時間v使用touch
39、()函數(shù),可以改變指定文件的訪問和修改時間。v?phpv/定義一個存儲文件名的變量v$filename = html/conteents.txt;v/使用當前時間,作為文件的最后訪問和修改時間vtouch($filename);vecho $filename的最后訪問時間是:.date(F d Y H:i:s., fileatime($filename);vecho $filename的修改時間是:.date(F d Y H:i:s., filemtime($filename);v/使用指定時間,作為文件的最后訪問和修改時間vtouch($filename,time()-1000);vclea
40、rstatcache();/清除文件屬性緩沖vecho $filename的最后訪問時間是:.date(F d Y H:i:s., fileatime($filename);vecho $filename的修改時間是:.date(F d Y H:i:s., filemtime($filename);v/使用指定時間,作為文件的最后訪問時間vclearstatcache();/清除文件屬性緩沖vtouch($filename,time()-2000,time()+2000);vecho $filename的最后訪問時間是:.date(F d Y H:i:s., fileatime($filena
41、me);vecho $filename的修改時間是:.date(F d Y H:i:s., filemtime($filename);v?改變文件所屬的組改變文件所屬的組v 使用chgrp()函數(shù)可以改變文件所屬的組。chgrp()函數(shù)的演示代碼如下所示。v v 留意:只有超級用戶可以任意修改文件的組。改變文件所有者改變文件所有者v 使用chown()函數(shù)可以改變文件的所有者。chown()函數(shù)的演示代碼如下所示。v v 留意:只有超級用戶可以任意修改文件的所有者。改變文件權限改變文件權限v 文件權限可以設定當前文件,被所有者、組用戶和公共用戶訪問的權限。其值由4個八進制數(shù)表示,第1個八進制數(shù)
42、是0,其后每1個八進制數(shù)由3個數(shù)字相加來表示訪問權限:1表示文件可執(zhí)行,2表示文件可寫,4表示文件可讀。v 文件權限第1個數(shù)表示所有者對文件的訪問權限,如果所有者對文件有全部訪問權限,那么其值應該是1+2+4=7。v 文件權限第2個數(shù)表示組用戶對文件的訪問權限,如果組用戶對文件有可讀、可執(zhí)行的權限,那么其值應該是1+4=5。v 文件權限第3個數(shù)表示公共用戶對文件的訪問權限,如果公共用戶對文件只有可讀權限,那么其值應該是1。文件操作的錯誤處理文件操作的錯誤處理v在文件操作過程中,由于權限、途徑、文件名等不確定的因素,文件系統(tǒng)函數(shù)在操作文件時,會產生錯誤,為了避免錯誤產生,應在操作文件之前,就對文
43、件進檢測。本節(jié)主要介紹用于文件系統(tǒng)錯誤處理的函數(shù)。判斷給定文件名是否是目錄判斷給定文件名是否是目錄v由于文件與目錄的操作函數(shù)是不能通用的,所以在不確定給定的變量是文件名或目錄的情況下,可以使用is_dir()函數(shù)進行檢測,判斷給定文件名是否可執(zhí)行判斷給定文件名是否可執(zhí)行v 使用is_executable()函數(shù),可以檢測指定文件是否為可執(zhí)行文件,如果測試文件存在,并可以執(zhí)行,函數(shù)將返回TRUE,否則返回FALSE.v ?phpv /建立一個判斷文件是否可以執(zhí)行的函數(shù)v function isexec($file)v if(is_executable($file)v echo 文件$file可執(zhí)
44、行;v elseecho 文件$file不可執(zhí)行;v v /定義存儲文件名的變量v $file = html/contents.txt;v /使用函數(shù)判斷這些變量v isexec($file);v ?判斷給定文件名是否是文件判斷給定文件名是否是文件v使用is_file()函數(shù),可以檢測指定文件是否為文件,如果是文件函數(shù)將返回TRUE,否則返回FALSE,is_file()函數(shù)演示代碼如清單所示。判斷指定文件是否可讀判斷指定文件是否可讀v服務器端的腳本程序,訪問文件系統(tǒng)時,使用的一般都是公共用戶。由于公共用戶的權限會受到一些限制,當文件權限不確定的情況下,可以使用is_readable()函數(shù),
45、測試指定文件是否可讀。判斷文件是否是通過判斷文件是否是通過HTTP POST上傳的上傳的v使用HTML表單通過POST上傳文件時,出于安全方面的考慮,可以使用is_uploaded_file()對上傳的文件進行檢測,is_uploaded_file()有1個必選參數(shù),其值是文件上傳變量的臨時文件名。下面演示is_uploaded_file()函數(shù)的使用方法,vis_uploaded_file()函數(shù)運行后,如果臨時文件是使用權HTTP POST方式上傳的,將返回TRUE值,否則返回FALSE值。判斷給定的文件名是否可寫判斷給定的文件名是否可寫v 當文件權限不確定的情況下,可以使用當文件權限不確
46、定的情況下,可以使用is_writable()函數(shù),測試指定文件是否可寫。函數(shù),測試指定文件是否可寫。v ?phpv /建立一個判斷文件名是否可寫的函數(shù)建立一個判斷文件名是否可寫的函數(shù)v function testwrite($file)v if(is_writable($file)v echo $file可寫可寫;v elseecho $file不可寫不可寫;v v /定義存儲文件名的變量定義存儲文件名的變量v $file1 = html/contents.txt;v $file1 = html/arraycontents.txt;v /使用函數(shù)判斷這些變量使用函數(shù)判斷這些變量v testw
47、rite($file1);v testwrite($file1);v ?檢查文件或目錄是否存在檢查文件或目錄是否存在v 在使用文件系統(tǒng)函數(shù)時,除了權限問題可以引起錯誤外,要操作的文件或目錄是否存在,也經常引發(fā)錯誤。在PHP中,可以使用file_exists()函數(shù),檢查指定目錄或文件是否存在。路徑與磁盤操作路徑與磁盤操作v文件系統(tǒng)函數(shù)操作文件的同時,一定會涉及到對路徑的相關操作。路徑又分為相對路徑和絕對路徑,相對路徑是以操作的文件所在目錄為起點的路徑;絕對路徑是以當前文件所在盤符為起點的路徑。本節(jié)主要介紹關于路徑和磁盤方面的函數(shù)。獲取文件路徑的信息獲取文件路徑的信息v使用pathinfo()函數(shù),可以對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用電安全操作試題及答案
- 2015毛概題庫及答案
- 2011中考試題及答案
- 17高考試題及答案
- 《人才測評》題庫及答案
- 2025年免疫治療在自身免疫性眼病中的應用創(chuàng)新報告
- 華北電力大學鍋爐原理教案第 2 講 亞臨界與超臨界參數(shù)鍋爐的主要型式
- 2024高中物理刷題首秧第三章第3節(jié)幾種常見的磁吃點練+鞏固練含解析新人教版選修3-1
- 2025至2030年中國電子雨刮器行業(yè)市場競爭現(xiàn)狀及發(fā)展趨向研判報告
- 雨污分流管網改造建設項目規(guī)劃設計方案(模板范文)
- 替普瑞酮聯(lián)合硫糖鋁治療慢性非萎縮性胃炎伴糜爛的療效及安全性分析
- 《霸王茶姬》認證考核試題附答案
- 集裝箱冷板式液冷數(shù)據(jù)中心技術規(guī)范
- GB/T 7106-2019建筑外門窗氣密、水密、抗風壓性能檢測方法
- GB/T 28046.4-2011道路車輛電氣及電子設備的環(huán)境條件和試驗第4部分:氣候負荷
- (精心整理)考試作文格紙
- 倉庫管理員培訓教材課件
- (新版)供電可靠性理論考試題庫大全-上(單選、多選題)
- AS9100D體系標準中文版
- 《中國腦卒中護理指導規(guī)范(2021年版)》課件
- 學前教育學備課課件(共54張PPT)
評論
0/150
提交評論