開源的PHP+mysql:第8章文件與目錄操作課件_第1頁
開源的PHP+mysql:第8章文件與目錄操作課件_第2頁
開源的PHP+mysql:第8章文件與目錄操作課件_第3頁
開源的PHP+mysql:第8章文件與目錄操作課件_第4頁
開源的PHP+mysql:第8章文件與目錄操作課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、第八講 操作文件和目錄(10章)課前回顧 字符串定義(掌握) 字符串輸出(掌握) 字符串索引(掌握) 字符串操作符(掌握) 字符串處理(重點) 其他字符串函數(shù)(重點)本節(jié)目標 路徑與磁盤操作(部分掌握) 文件屬性的操作(部分掌握) 操作目錄(部分掌握) 操作文件(重點) 讀取和寫入文件(重點)8.1 路徑與磁盤操作文件系統(tǒng)函數(shù)操作文件的同時,一定會涉及到對路徑的相關操作。路徑又分為相對路徑和絕對路徑,相對路徑是以操作的文件所在目錄為起點的路徑;絕對路徑是以當前文件所在盤符為起點的路徑。本節(jié)主要介紹關于路徑和磁盤方面的函數(shù)。8.1.1 獲取文件路徑的信息使用pathinfo()函數(shù),可以對指定的

2、路徑和文件名進行解析,并返回一個數(shù)組。下面演示pathinfo()函數(shù)的使用方式,獲取文件路徑的信息$value) echo $key=$value;?8.1.3 獲取路徑中的目錄部分使用dirname()函數(shù),可以快速的獲取指定文件的路徑部分。dirname()函數(shù)是根據(jù)目錄分割符,來取得路徑中路徑部分的。在windows系統(tǒng)下,“/”與“”都可以作為目錄分割符,其他系統(tǒng)使用“/”作為分割符。8.1.4 尋找與模式匹配的文件路徑glob()函數(shù)可以根據(jù)指定的條件,來尋找與條件相符的文件或目錄,并通過數(shù)組返回。代碼清單 尋找與模式匹配的文件路徑?php/使用glob()函數(shù),返回當前目錄下,所

3、有的.php文件$result = glob(*.php);/遍歷返回的數(shù)組foreach ($result as $filename) echo $filename;?8.1.6 獲取目錄的磁盤總大小disk_total_space()函數(shù)可以根據(jù)文件系統(tǒng)和磁盤分區(qū),返回指定目錄的空間大小。清單 獲取目錄的磁盤空間大小?php/在Windows下,查看C分區(qū)的總字節(jié)數(shù)$totalspace = disk_total_space(C:);echo c:盤的總字節(jié)數(shù)為:.$totalspace;/以M為單位顯示磁盤大小$m = $totalspace/1024/1024;echo c:盤大小為:

4、.$m.M;?8.2 文件屬性的操作文件屬性包括文件的大小、修改時間、所有者、權(quán)限、類型等信息。通過了解文件的屬性,可以幫助程序員判斷文件現(xiàn)在的狀態(tài),對文件實現(xiàn)更細致的管理。8.2.1 獲取文件統(tǒng)計信息使用stat()函數(shù),可以獲取參數(shù)指向文件的統(tǒng)計信息清單 stat()函數(shù)使用方法 $value) echo 鍵名:$key:單元值:$value;?8.2.3 獲取文件相關信息雖然可以使用stat()、fstat()函數(shù),取得文件屬性,但是每次使用文件屬性時,都需要對數(shù)組進行訪問。PHP提供了更加簡捷的方法,來訪問文件的某一個文件屬性。這些函數(shù)主要包括:fileatime()函數(shù),用于取得文件

5、的上次訪問時間。filectime()函數(shù),用于取得文件的inode修改時間。filegroup()函數(shù),用于取得文件的組。fileinode()函數(shù),用于取得文件的inode。inode譯成中文就是索引節(jié)點,它用來存放檔案及目錄的基本信息,包含時間、檔名、使用者及群組等。 filemtime()函數(shù),用于取得文件修改時間。fileowner()函數(shù),取得文件的所有者。fileperms()函數(shù),取得文件的權(quán)限。filesize()函數(shù),取得文件大小。filetype()函數(shù),取得文件類型。8.2.4 修改文件訪問和修改時間使用touch()函數(shù),可以改變指定文件的訪問和修改時間。?phpda

6、te_default_timezone_set(PRC);/設置時區(qū)為中國所在時區(qū)/定義一個存儲文件名的變量$filename = html/conteents.txt;/使用當前時間,作為文件的最后訪問和修改時間touch($filename);echo $filename的最后訪問時間是:.date(F d Y H:i:s., fileatime($filename);echo $filename的修改時間是:.date(F d Y H:i:s., filemtime($filename);8.3 操作目錄目錄在文件系統(tǒng)中是一個重要的概念,專業(yè)的術(shù)語把其解釋成存儲在磁盤上的文件及其他目錄的

7、索引,也可以將其視為一個文件夾,在文件夾中,可以放置其他的文件或文件夾,從而使得計算機的文件系統(tǒng)井井有條。最頂層的目錄稱為根目錄,在PHP中用“/”或“”代表?!?”代表當前目錄,“.”代表上級目錄。8.3.1 打開目錄句柄目錄和文件的訪問,都是通過句柄實現(xiàn)的,使用opendir()打開一個目錄句柄,以便其他目錄函數(shù)使用8.3.2 新建目錄新建和刪除目錄屬于文件系統(tǒng)函數(shù)/默認的 mode 是 0777,意味著最大可能的訪問權(quán) 8.3.3 刪除目錄rmdir()函數(shù)會試圖刪除要求的目錄,但是目錄必須為空并具有相應的權(quán)限。代碼如下所示。刪除目錄要注意的問題:以上代碼嘗試刪除根目錄下名為“temp”

8、的目錄。目錄刪除成功將返回TRUE,如果刪除失敗將返回FALSE,并顯示錯誤信息,可以使用“”符號來抑制錯誤信息的輸出。8.3.4 取得當前工作目錄getcwd()函數(shù)用于獲取當前的工作目錄,通過對返回值的判斷,確定當前操作的目錄是否正確。代碼如下所示。獲取當前工作目錄時要注意的問題:此函數(shù)運行時將返回一個字符串,記錄當前目錄情況。失敗將返回FALSE。8.3.5 改變當前目錄通過操作chdir(),可以改變當前目錄,以定位到可用資源,改變當前目錄的演示代碼如下所示。?phpecho getcwd() . “”; / 顯示當前目錄chdir(html); /改變當前目錄echo getcwd(

9、).“”; / 顯示當前目錄?在使用chdir()函數(shù)時,要注意以下問題:本例中的chdir()將當前目錄更改為“html”。成功返回TRUE,失敗將返回FALSE。8.3.7 列出指定路徑中的文件和目錄使用scandir()函數(shù)可以實現(xiàn)這個功能,并能按照參數(shù)對列出的目錄進行排序,默認的排序順序是按字母升序排列。如果使用了可選參數(shù) (第二個參數(shù)設為 1),則排序順序是按字母降序排列。 8.3.8 關閉目錄句柄在使用完opendir()打開的目錄句柄后,應使用closedir()進行關閉,以節(jié)省服務器資源,代碼如下所示。8.4 操作文件的一般方法剛才學習了使用相關目錄函數(shù)對目錄進行新建、打開、刪

10、除、讀取及關閉等操作。在這一節(jié)中將學習操作文件的一般步驟,即:打開、讀取、寫入、關閉。而本節(jié)很多知識與上一節(jié)是相通的,如目錄的打開與文件的打開,只不過它們使用的函數(shù)不一樣而已。8.4.1 判斷文件是否存在通過file_exists()函數(shù)來判斷文件或文件夾是否存在,這樣在實際應用中可以避免很多錯誤的產(chǎn)生. 8.4.2 打開文件在學習打開文件之前先看一段代碼。代碼如下所示。8.4.2 讀取文件文件操作中最頻繁的應該是讀取操作,所以在讀取文件時一定要注意優(yōu)化代碼,這樣才能從代碼層面提高程序質(zhì)量代碼里的fread(),就是基本的讀取文件函數(shù),它的原型如下所示。string fread ( int $

11、handle, int $length )8.4.3 寫入文件寫入文件操作具有重大的意義,軟件運行時計算出來的數(shù)據(jù),用戶提交、修改的信息,通常都需要保存下來,供以后使用。而把數(shù)據(jù)寫入文件,就是其中的解決方案之一。為了方便理解,先看一段簡單的寫入文件的程序,代碼如下所示。8.4.4 關閉文件關閉文件正確的說法是關閉一個已經(jīng)打開的文件句柄,在上面幾個小節(jié)的學習中,都使用了這個函數(shù),即:fclose();fclose()只有唯一的一個參數(shù),即文件句柄。使用fopen()或fscokopen()成功打開的句柄,都可以使用其來關閉。8.5 文件的基本操作在上一節(jié)中學習了操作文件的一般步驟,以及一些基礎的

12、文件系統(tǒng)函數(shù)。本節(jié)是在上節(jié)內(nèi)容的基礎上學習更多的文件系統(tǒng)函數(shù)及操作文件的技巧。8.5.1 在當前目錄新建文件新建文件使用的函數(shù)還是fopen(),只不過是通過對fopen()的$mode值的選擇來完成。使用fopen()函數(shù)新建文件時,要注意以下幾個問題:這段簡單的代碼完成了在當前目錄新建一個名為“model.txt”文件,注意如果fopen()的第一個參數(shù)是“html/model.txt”時,程序會在當前目錄的子目錄“html”,創(chuàng)建“model.txt”文件。即使再短的打開文件操作,也應該使用關閉句柄函數(shù)。8.5.2 刪除文件使用unlink()函數(shù),可以刪除程序運行時產(chǎn)生的臨時文件,刪除

13、文件的演示代碼如下所示。unlink()函數(shù)有1個參數(shù),即要刪除文件的路徑與文件名。注意:使用unlink()函數(shù)刪除文件時,如果刪除成功,函數(shù)將返回TRUE值,如果刪除失敗,函數(shù)將返回FALSE值。8.5.3 復制文件復制文件就是根據(jù)源文件的內(nèi)容,建立一個擁有同樣內(nèi)容的新文件。在不想破壞操作文件時,可以通過復制源文件,對新產(chǎn)生的文件進行操作。復制文件使用copy()函數(shù)實現(xiàn),演示代碼如下所示。8.5.4 移動、重命名文件或目錄使用rename()函數(shù),可以移動、重新命名一個已經(jīng)存在的文件或目錄,演示代碼如下所示。8.6 寫入文件前面介紹過使用fwrite()函數(shù)寫入文件的方法,在文件系統(tǒng)函數(shù)

14、中,還可以使用fputs()、fputcsv()、file_put_contents()函數(shù)來把內(nèi)容寫入文件。fputs()是fwrite()函數(shù)的別名,這兩個函數(shù)的實現(xiàn)的功能是一樣的,fputcsv()函數(shù)可以把數(shù)組按指定的規(guī)則寫入文件,而file_put_contents(),可以把一個字符串直進寫入文件。這3個函數(shù)各有特點,在實際應用中,就根據(jù)情況選擇使用。8.6.1 寫入文件int fwrite ( resource handle, string string , int length )第1個參數(shù)是使用fopen()函數(shù)以及類似函數(shù)打開的文件句柄。第2個參數(shù)是要寫入文件的字符串變量。

15、第3個參數(shù)是可選參數(shù),如果指定了這個參數(shù)的值,fwrite()函數(shù)將在寫入指定長度字符串后結(jié)束運行。8.6.2 將字符串寫入文件使用file_put_contents()函數(shù),可以把一個字符串變量寫入文件。此函數(shù)與fwrite()函數(shù)的不同之處在于,fwrite()函數(shù)需要一個fopen()或類似函數(shù)創(chuàng)建的句柄,file_put_contents()只需要運行函數(shù)本身。8.7 文件的讀取與指針文件讀取函數(shù)分為兩種,一種是把文件全部讀入內(nèi)存的函數(shù),如file_get_contents()函數(shù);一種是依靠文件內(nèi)部的指針,來讀取文件內(nèi)容的函數(shù),如fread()函數(shù)。這兩種函數(shù)都有其優(yōu)缺點,在實際應用中,可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論