




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、企企 業業 網網 站站 開開 發發PHP版版講師:王靖講師:王靖課課 程程 目目 標標第第9章章 文件系統與操作文件系統與操作9第10章 PHP交互10第11章 Cookie與Session11第12章 圖像處理12目錄與文件目錄與文件v第5章講述了數組的工作原理、訪問方法和常用函數。但是數組畢竟是存在于內存中的,不能長久的保存供以后使用,這就要求程序員對數組以及內存中有用的變量進行保存。數據的保存有很多形式,通過這一章的學習,就能找到其中的一種解決方案。在本章中,為了提高大家的動手能力,有些目錄或文件并沒有建立,我們可以根據系統提示的錯誤,找到解決的方法。 操作目錄操作目錄v目錄在文件系統中
2、是一個重要的概念,專業的術語把其解釋成存儲在磁盤上的文件及其他目錄的索引,也可以將其視為一個文件夾,在文件夾中,可以放置其他的文件或文件夾,從而使得計算機的文件系統井井有條。最頂層的目錄稱為根目錄,在PHP中用“/”或“”代表。“.”代表當前目錄,“.”代表上級目錄。目錄操作目錄操作 打開目錄 關閉目錄 讀取目錄 遍歷目錄 創建目錄 刪除目錄 判斷是否是目錄判斷是否是目錄 v函數函數is_dir()用來判斷是否是目錄,其語法結構如下:用來判斷是否是目錄,其語法結構如下:vis_dir($path)v參數參數$path為打開目錄的路徑,如果文件名存在并且為為打開目錄的路徑,如果文件名存在并且為目
3、錄,則返回目錄,則返回 true。假設。假設 file 是一個相對路徑,則按是一個相對路徑,則按照當前工作目錄檢查其相對路徑。照當前工作目錄檢查其相對路徑。 【范例】利用函數is_dir(),判斷images是否是目錄。判斷是否是目錄判斷是否是目錄 v 判斷文件是否存在判斷文件是否存在 v在對一個文件進行訪問之前,一般需要先判斷文件是否在對一個文件進行訪問之前,一般需要先判斷文件是否存在,因為用不恰當的方式訪問一個并不存在的文件,存在,因為用不恰當的方式訪問一個并不存在的文件,就會導致錯誤。在就會導致錯誤。在PHP中,中,file_exists()函數能夠檢查函數能夠檢查文件是否存在,其結構形
4、式如下:文件是否存在,其結構形式如下:vfile_exists($string)。v參數參數$string為一個指向文件或目錄的字符型變量,如為一個指向文件或目錄的字符型變量,如果文件或目錄存在,則返回值果文件或目錄存在,則返回值true,反之返回,反之返回false。 【范例】如果網頁需要調用php.txt,首先判斷文件是否存在。如果不存在,發出警告“指定的文件不存在”,如果存在,輸出“可以調用文件”。 打開目錄打開目錄 v函數函數opendir()用來打開一個目錄,其語法結構如下:用來打開一個目錄,其語法結構如下:vopendir(string $path)v參數參數$path為打開目錄的
5、路徑,函數將返回一個打開目為打開目錄的路徑,函數將返回一個打開目錄的句柄,用于存儲當前的目錄資源,打開目錄前像打錄的句柄,用于存儲當前的目錄資源,打開目錄前像打開文件一樣,要先檢測目錄是否存在,如果打開一個不開文件一樣,要先檢測目錄是否存在,如果打開一個不存在的目錄,程序將出錯。存在的目錄,程序將出錯。 【范例】利用函數opendir(),打開D盤下的images目錄。打開目錄打開目錄v關閉目錄關閉目錄 v關閉目錄利用函數關閉目錄利用函數closedir(),其語法結構為:,其語法結構為:vclosedir($dp)v參數參數dp為使用函數為使用函數opendir()打開的目錄返回的資源對打開
6、的目錄返回的資源對象。象。 打開目錄失敗時釋放資源打開目錄失敗時釋放資源v 讀取目錄讀取目錄 v在在PHP中使用中使用readdir()函數讀取目錄中的文件并返回文函數讀取目錄中的文件并返回文件名,其語法結構如下:件名,其語法結構如下:vreaddir($dp)v參數參數dp為使用函數為使用函數opendir()打開的目錄返回的資源對打開的目錄返回的資源對象,函數返回目錄下的文件名。下面通過示例講解讀取象,函數返回目錄下的文件名。下面通過示例講解讀取目錄的方法。目錄的方法。 【范例】利用函數opendir(),打開D盤下的images目錄,并讀取其下面的文件。讀取目錄讀取目錄 v 遍歷目錄遍歷
7、目錄 v一個目錄下往往會存放很多文件,如果想查看某個目一個目錄下往往會存放很多文件,如果想查看某個目錄下存放的文件,可通過遍歷目錄,顯示目錄下的所錄下存放的文件,可通過遍歷目錄,顯示目錄下的所有文件信息。目錄就是一個典型的樹形結構,實現遍有文件信息。目錄就是一個典型的樹形結構,實現遍歷的方法很多,這里通過實例講解目錄的遍歷。歷的方法很多,這里通過實例講解目錄的遍歷。【范例】利用遞歸實現遍歷D盤images文件夾下所有的文件信息。遍歷目錄遍歷目錄 v 創建目錄創建目錄 v在備份當天數據或存放用戶注冊信息時,經常需要創建在備份當天數據或存放用戶注冊信息時,經常需要創建目錄,目錄,mkdir()函數
8、可以實現目錄的創建,其結構形式函數可以實現目錄的創建,其結構形式如下:如下:vmkdir(string $dirname,int $mode)v參數參數$dirname為字符變量,內容為想要創建目錄的名為字符變量,內容為想要創建目錄的名稱。參數稱。參數$mode為整型變量,默認是為整型變量,默認是 0777,表示創建模表示創建模式式,執行此函數將在指定目錄下創建新的目錄執行此函數將在指定目錄下創建新的目錄,mode 在在 Windows 下被忽略下被忽略 。 新建目錄新建目錄v【范例】 在chengxu文件夾內創建存放照片的文件夾pic。 刪除目錄刪除目錄 vPHP提供一個提供一個rmdir(
9、)函數可以用來刪除目錄,其結構函數可以用來刪除目錄,其結構形式如下:形式如下:vrmdir(string $dirname)v參數參數$dirname為字符變量,為要刪除目錄的名稱。為字符變量,為要刪除目錄的名稱。【范例】刪除D盤images的目錄。 刪除目錄刪除目錄v v 刪除目錄要注意的問題:v 以上代碼嘗試刪除根目錄下名為“temp的目錄。v 目錄刪除成功將返回TRUE,如果刪除失敗將返回FALSE,并顯示錯誤信息,可以使用“”符號來抑制錯誤信息的輸出。取得當前工作目錄取得當前工作目錄v 此函數用于獲取當前的工作目錄,通過對返回值的判斷,確定當前操作的目錄是否正確。代碼如下所示。v v
10、獲取當前工作目錄時要注意的問題:v 此函數運行時將返回一個字符串,記錄當前目錄情況。v 失敗將返回FALSE。改變當前目錄改變當前目錄v 回FALSE。通過操作此函數,可以改變當前目錄,以定位到可用資源,改變當前目錄的演示代碼如下所示。v ?phpv / 顯示當前目錄v echo getcwd() . ;v /改變當前目錄v chdir(html);v / 顯示當前目錄v echo getcwd().;v ?v 在使用chdir()函數時,要注意以下問題:v 本例中的chdir()將當前目錄更改為“html”。v 成功返回TRUE,失敗將返從目錄句柄中讀取條目從目錄句柄中讀取條目v 使用rea
11、ddir()函數,會從目錄句柄中讀取下一個文件的文件名。配合while循環可以實現對目錄的遍歷,代碼如下所示。v ?php$dir = “html”;$handle = opendir($dir);if ($handle != false) echo 本目錄包含:;/* 這是正確地遍歷目錄方法 */while(false != ($file = readdir($handle)echo $file.;closedir($handle);elseecho “打開目錄錯誤!”;?列出指定路徑中的文件和目錄列出指定路徑中的文件和目錄v scandir() 函數返回一個數組,其中包含指定路徑中的文件和
12、目錄。若成功,則返回一個數組,若失敗,則返回 false。假設 directory 不是目錄,則返回布爾值 false 并生成一條 E_WARNING 級的錯誤。v scandir(directory,sort,context) directory必需。規定要掃描的目錄。sort可選。規定排列順序。默認是 0 (升序)。如果是 1,則為降序。context可選。規定目錄句柄的環境。context 是可修改目錄流的行為的一套選項。v 關閉目錄句柄關閉目錄句柄v 在使用完opendir()打開的目錄句柄后,應使用closedir()進行關閉,以節省服務器資源,代碼如下所示。v directory類
13、類v 為了方便用戶對目錄的操作,PHP提供了一個類似使用面向對象機制的函數,它實際上相當于使用readdir()、rewind()、closedir()三個函數實現遍歷目錄的功能,dir(directory) v handle.;v echo 途徑:.$dir-path.;v while(false != ($entry = $dir-read()v echo $entry.;v v $dir-close();v ?操作文件的一般方法操作文件的一般方法v上一節學習了使用相關目錄函數對目錄進行新建、翻開、刪除、讀取及關閉等操作。在這一節中將學習操作文件的一般步驟,即:翻開、讀取、寫入、封鎖。而本
14、節很多知識與上一節是相通的,如目錄的打開與文件的打開,只不過它們使用的函數不一樣而已。訪問文件屬性訪問文件屬性在進行處理文件之前,有時需要知道文件的一些屬性,如文件的大小、類型、修改時間、在進行處理文件之前,有時需要知道文件的一些屬性,如文件的大小、類型、修改時間、訪問時間和文件的權限等。訪問時間和文件的權限等。PHP提供了一些函數可直接獲取文件的屬性。提供了一些函數可直接獲取文件的屬性。函函 數數 名名作作 用用參數及返回值參數及返回值filesize(string)獲取文件獲取文件的大小的大小參數參數string為一個指向文件或目錄的字符型變量。函數的返回值為整為一個指向文件或目錄的字符型
15、變量。函數的返回值為整型變量,型變量,返回文件的大小返回文件的大小。如果出錯,則返回。如果出錯,則返回false。函數參數不能為。函數參數不能為遠程文件,返回結果會被緩存遠程文件,返回結果會被緩存filetype(string)獲取文件獲取文件的類型的類型參數參數string為一個指向文件或目錄的字符型變量。函數的返回值為字為一個指向文件或目錄的字符型變量。函數的返回值為字符型變量,可能出現的值有符型變量,可能出現的值有fifo,char,dir,block,link,file和和unknown,返回值會被緩存,返回值會被緩存filemtime(string)獲取文件獲取文件修改的時修改的時間
16、間參數參數string為一個指向文件或目錄的字符型變量。函數的返回值為整為一個指向文件或目錄的字符型變量。函數的返回值為整型變量,型變量,返回文件的修改時間返回文件的修改時間fileatime(string)獲取文件獲取文件的訪問時的訪問時間間參數參數string為一個指向文件或目錄的字符型變量。函數的返回值為整為一個指向文件或目錄的字符型變量。函數的返回值為整型變量,內容為型變量,內容為文件的訪問時間文件的訪問時間fileperms(string)獲取文件獲取文件的權限的權限參數參數string為一個指向文件或目錄的字符型變量。函數的返回值為整為一個指向文件或目錄的字符型變量。函數的返回值為
17、整型變量,內容為文件相應的權限,同其他這一類的函數一樣,參數不型變量,內容為文件相應的權限,同其他這一類的函數一樣,參數不能為遠程文件,另外返回結果同樣會被緩存能為遠程文件,另外返回結果同樣會被緩存打開文件打開文件 v讀取文件中的數據之前,必須要先打開一個文件,這是其他文件操作的基礎。PHP使用fopen()函數打開一個文件,其結構形式如下:vresource fopen (string $filename, string $mode)v其中參數filename是所要打開的文件名,可以打開本地文件,其形式為“scheme:/”。也可打開遠程Web服務器上的文件,其形式為“.”。如果其形式為以“
18、ftp:/.”開頭,則其表示打開的文件是遠程FTP服務器上的。參數mode是要打開文件的方式,參數$mode是可以接收的模式。代碼如下一頁表所示,其中代碼“b和代碼“t僅作用于Windows系統。 模模 式式說說 明明r只讀方式打開,將文件指針指向文件頭r+讀寫方式打開,將文件指針指向文件頭w只寫入方式打開,將文件指針指向文件頭并將文件大小截為0。如果文件不存在,則嘗試創建一個新文件w+寫入方式打開,將文件指針指向文件頭并將文件大小截為0。如果文件不存在,則嘗試創建一個新文件a只寫入方式打開,將文件指針指向文件末尾。如果文件不存在,則嘗試創建一個新文件a+寫入方式打開,將文件指針指向文件末尾。
19、如果文件不存在,則嘗試創建一個新文件x只創建和打開本地文件只用于寫入,從文件起點開始。如果文件已經存在,則fopen()返回假,而且PHP發送一個警告。如果文件不存在,則創建它x+創建和打開本地文件進行讀取和寫入,從文件起點開始。如果文件已經存在,fopen()返回假,而且PHP發送一個警告。如果文件不存在,則創建它b默認模式,與其他模式配合使用,用于對二進制文件和文本文件區別對待的文件系統。對于Windows是必需的t與其他文件配合使用,代表Windows文本文件。把行結束符n轉換為rn。與b模式配合使用以提高可移植性vfopen()返回一個值,這個值包含一個文件句柄的整數,用來向執行文件操
20、作的函數標識該文件。有時這個值被稱為文件指針,指針就形如內存地址中的一個個小房間的門號。如果PHP打開文件失敗,那么這個值是false。利用常用的打開文件的方式打開本地文件和遠程文件。 打開文件打開文件v 在學習打開文件之前先看一段代碼。代碼如下所示。v 讀取文件讀取文件v 文件操作中最頻繁的應該是讀取操作,所以在讀取文件時一定要注意優化代碼,這樣才能從代碼層面提高程序質量。代碼里的fread(),就是基本的讀取文件函數,它的原型如下所示string fread ( int $handle, int $length )v 讀取文件讀取文件v從文件中讀取 10 個字節: vv讀取整個文件:v寫入
21、文件寫入文件v 寫入文件操作具有重大的意義,軟件運行時計算出來的數據,用戶提交、修改的信息,通常都需要保存下來,供以后使用。而把數據寫入文件,就是其中的解決方案之一。為了方便理解,先看一段簡單的寫入文件的程序,代碼如下所示。v v 代碼里的fwrite(),就是寫入文件函數,它的原型如下所示。v int fwrite ( resource $handle, string $string , int $length )關閉文件關閉文件v關閉文件正確的說法是關閉一個已經打開的文件句柄,fclose()只有唯一的一個參數,即文件句柄。使用fopen()或fscokopen()成功打開的句柄,都可以使
22、用其來關閉。v文件的基本操作文件的基本操作v在上一節中學習了操作文件的一般步驟,以及一些基礎的文件系統函數。本節是在上節內容的基礎上學習更多的文件系統函數及操作文件的技巧。在當前目錄新建文件在當前目錄新建文件v 新建文件使用的函數還是新建文件使用的函數還是fopen(),只不過是通過對,只不過是通過對fopen()的的$mode值的選值的選擇來完成。在編寫程序時,很多情況下要求某個文件的存在,作為程序的運擇來完成。在編寫程序時,很多情況下要求某個文件的存在,作為程序的運行條件,這時就可以使用下面的代碼:行條件,這時就可以使用下面的代碼:v v 使用使用fopen()函數新建文件時,要注意以下幾
23、個問題:函數新建文件時,要注意以下幾個問題:v 這段簡單的代碼完成了在當前目錄新建一個名為這段簡單的代碼完成了在當前目錄新建一個名為“model.txt文件,注意如文件,注意如果果fopen()的第一個參數是的第一個參數是“html/model.txt時,程序會在當前目錄的子目時,程序會在當前目錄的子目錄錄“html”,創建,創建“model.txt文件。文件。v 即使再短的打開文件操作,也應該使用關閉句柄函數。即使再短的打開文件操作,也應該使用關閉句柄函數。v 新建文件時,很容易因為文件存在或權限問題而失敗,所以在新建文件前,新建文件時,很容易因為文件存在或權限問題而失敗,所以在新建文件前,
24、應進行相關的檢查。應進行相關的檢查。刪除文件刪除文件v 使用unlink()函數,可以刪除程序運行時產生的臨時文件。unlink()函數有1個參數,即要刪除文件的路徑與文件名。v 留意:使用unlink()函數刪除文件時,如果刪除成功,函數將返回TRUE值,如果刪除失敗,函數將返回FALSE值。v 新建臨時文件新建臨時文件v 很多情況下,變量會被保存下來,但等程序運行完成后,這些保存變量的文件就要被刪除以節省服務器空間。但這個過程很麻煩的,程序員要記錄過程中產生的文件的名稱,還要使用函數對其進行刪除操作。而PHP為了使這一工作能夠快速有效的完成,為程序員提供了一個函數,即:tmpfile()函
25、數,函數的演示代碼如下所示。v 新建具有唯一文件名的文件新建具有唯一文件名的文件v tempnam()函數與tempfile()函數的使用方法都是一樣的,唯一區別的tempnam()函數將產生一個具有唯一文件名的文件。v 復制文件復制文件v復雜文件就是根據源文件的內容,建立一個擁有同樣內容的新文件。在不想破壞操作文件時,可以通過復制源文件,對新產生的文件進行操作。復制文件使用copy()函數實現,演示代碼如下所示。v挪動、重命名文件或目錄挪動、重命名文件或目錄v 使用rename()函數,可以移動、重新命名一個已經存在的文件或目錄,rename(oldname,newname)函數重命名文件或
26、目錄 。v 寫入文件寫入文件v前面介紹過使用fwrite()函數寫入文件的方法,在文件系統函數中,還可以使用fputs()、fputcsv()、file_put_contents()函數來把內容寫入文件。vfputs()是fwrite()函數的別名,這兩個函數的實現的功能是一樣的,fputcsv()函數可以把數組按指定的規則寫入文件,而file_put_contents(),可以把一個字符串直進寫入文件。這3個函數各有特點,在實際應用中,就根據情況選擇使用。寫入文件寫入文件vfwrite(file,string,length)寫入文件使用寫入文件使用fwrite()函數,函數,其有其有3個參數
27、,第個參數,第1個參數是必選參數,其值是使用個參數是必選參數,其值是使用fopen()函數,以及類似函數打開的文件句柄。第函數,以及類似函數打開的文件句柄。第2個參個參數也是必選參數,其值是要寫入文件的字符串變量。第數也是必選參數,其值是要寫入文件的字符串變量。第3個參數是可選參數,如果指定了這個參數的值,個參數是可選參數,如果指定了這個參數的值,fwrite()函數將在寫入指定長度字符串后結束運行。函數將在寫入指定長度字符串后結束運行。寫入文件寫入文件v將字符串寫入文件將字符串寫入文件v 使用file_put_contents()函數,可以把一個字符串變量寫入文件。file_put_cont
28、ents()函數與fwrite()函數的不同之處在于,fwrite()函數需要一個fopen()或類似函數創建的句柄,file_put_contents()只需要運行函數本身。v file_put_contents(file,data,mode)v file 必需。規定要寫入數據的文件。如果文件不存在,則創建一個新文件。 v data 可選。規定要寫入文件的數據。可以是字符串、數組或數據流。 v mode 可選。規定如何打開/寫入文件。可能的值:v FILE_USE_INCLUDE_PATH/FILE_APPEND /LOCK_EX v 提示:運用 FILE_APPEND 可避免刪除文件中已有
29、的內容。v 注釋:本函數可安全用于二進制對象。將字符串寫入文件將字符串寫入文件v v *v 文件的讀取與指針文件的讀取與指針v文件讀取函數分為兩種,一種是把文件全部讀入內存的函數,如file_get_contents()函數;一種是依靠文件內部的指針,來讀取文件內容的函數,如fread()函數。這兩種函數都有其優缺點,在實際應用中,可以根據情況選擇。把整個文件讀入到數組中把整個文件讀入到數組中vfile()函數讀取文件后,返回1個數組,其中數組的每個單元對應著文件的1行包括換符)。file()函數不僅可以讀取本地文件,還可以從網頁中讀取信息。vfile(path, include_path)v
30、path 必需。規定要讀取的文件。 vinclude_path 可選。如果也想在 include_path 中搜尋文件的話,可以將該參數設為 “1”。 v下面演示file()函數讀取文件的方法,把整個文件讀入到數組中把整個文件讀入到數組中v ?phpv /使用file()函數讀取html目錄下的cache.txtv $array = file(html/cache.txt);v /遍歷file()函數返回的數組v foreach($array as $line)v echo $line.;v v /使用file()函數讀取網頁內容v $webPage = file(/);v /遍歷file()
31、函數返回的數組v foreach($webPage as $line)v echo $line;?將文件讀取到字符串將文件讀取到字符串使用file_get_contents()函數,可以把參數指定的文件,整個讀取到1個字符串變量中清單 file_get_contents()函數讀取文件的方法 獲取、設置文件內部指針位置獲取、設置文件內部指針位置v文件內部指針,是文件操作系統內部的數據指針,用于標注文件當前的讀寫位置。使用ftell()函數可以查看當前文件內部指針的位置。使用fseek()函數,則可以快速的把文件的內部指針,指向參數指定的位置。vftell()函數只有1個參數,其值是使用fope
32、n()或類似函數創建的句柄。ftell()函數運行后,將返回當前文件指針的位置。fseek()函數有3個參數,第1個參數是必選參數,其值是使用fopen()函數,以及類似函數打開的文件句柄。第2個參數也是必選參數,其值是數字,代表指針移動到文件處的位置。從文件指針處讀取字符從文件指針處讀取字符v使用fgetc()函數,可以從當前文件指針處,讀取一個字符并返回。下面演示fgetc()函數的使用方法,代碼如清單所示從文件指針處讀取數據從文件指針處讀取數據v使用fgets()函數,可以讀取文件指針指向的當前行,并返回一個記錄當前行內容的字符串。fgets()函數包括2個參數,第1個參數是必選參數,其
33、值是fopen()或類似函數創建的文件句柄,第2個參數是可選參數,其值用于指定讀取文件的大小。從文件指針處讀取數據并過濾從文件指針處讀取數據并過濾HTMLv 使用fgetss()函數,可以從文件指針處讀取一行數據,并過濾掉文件中的HTML與PHP標記v 重置文件指針的位置重置文件指針的位置v 使用rewind()函數,可以重置當前文件的指針位置,使指針返回到文件頭。?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()函數重置文件指針;v rewind($fh);v echo 顯示當前指針:.ftell($fh).;v ?文件尾部指針測試文件尾部指針測試v 使用feof()函數,可以檢查當前文件的內部指針,是否已經處于文件尾部。feof()函數經常與while()循環語句配合,實現讀取文件。feof()函數據的演示代碼如下所示。v 文件的上傳與下載文件的上傳與下載v文件的上傳與下載,都需要使用文件系統函數來完成。本節將介紹在文件上傳與下載過程中,使用到的文件系統函數。處理上傳文件的函數是move_uploaded_f
35、ile(),實現文件下載的函數是fpassthru()。處理上傳文件處理上傳文件v使用HTML產生上傳文件變量,產生上傳文件變量的表單,只能把要上傳的文件,上傳到系統的臨時文件夾,要想把這個臨時文件保存到指定的位置,需要使用move_uploaded_file()函數。vmove_uploaded_file(file,newloc) v第1個參數是必選參數,規定要移動的文件,其值是一個合法的上傳文件名.v第2個參數是必選參數,規定文件的新位置,其值是由目錄和文件名組成的字符串,代表臨時文件存儲的位置和文件名。v注釋:本函數僅用于通過 POST 上傳的文件。v留意:如果目標文件已經存在,將會被覆
36、蓋。讀取文件到輸出緩沖區讀取文件到輸出緩沖區v 使用readfile()函數,可以讀取參數指定的文件到輸出緩沖區,被輸入到緩沖區的內容,將在瀏覽器上顯示。v 將文件輸出到緩沖區將文件輸出到緩沖區v 使用fpassthru ()函數,可以把參數指向的文件,輸出到緩沖區。實現文件下載實現文件下載v 實現文件下載,需要兩個方面的條件:一是向瀏覽器發送正確的報頭,二是把文件輸出到緩沖區。本小節使用readfile()函數,來實現文件的下載功能文件屬性的操作文件屬性的操作v文件屬性包括文件的大小、修改時間、所有者、權限、類型等信息。通過了解文件的屬性,可以幫助程序員判斷文件現在的狀態,對文件實現更細致的
37、管理。獲取文件統計信息獲取文件統計信息v 使用stat()函數,可以獲取參數指向文件的統計信息,下面演示stat()函數的使用方法,代碼如清單所示。v 清單 stat()函數使用方法 v $value)v echo 鍵名:$key:單元值:$value;v v ?通過文件句柄獲取文件統計信息通過文件句柄獲取文件統計信息v 使用fstat()函數,可以獲取文件統計信息。v $value)v echo 鍵名:$key:單元值:$value;v v ?獲取文件相關信息獲取文件相關信息v 雖然可以使用stat()、fstat()函數,取得文件屬性,但是每次使用文件屬性時,都需要對數組進行訪問。PHP提
38、供了更加簡捷的方法,來訪問文件的某一個文件屬性。這些函數主要包括:v fileatime()函數,用于取得文件的上次訪問時間。v filectime()函數,用于取得文件的inode修改時間。v filegroup()函數,用于取得文件的組。v fileinode()函數,用于取得文件的inode。v filemtime()函數,用于取得文件修改時間。v fileowner()函數,取得文件的所有者。v fileperms()函數,取得文件的權限。v filesize()函數,取得文件大小。v filetype()函數,取得文件類型。修改文件訪問和修改時間修改文件訪問和修改時間v使用touch
39、()函數,可以改變指定文件的訪問和修改時間。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()函數可以改變文件所屬的組。chgrp()函數的演示代碼如下所示。v v 留意:只有超級用戶可以任意修改文件的組。改變文件所有者改變文件所有者v 使用chown()函數可以改變文件的所有者。chown()函數的演示代碼如下所示。v v 留意:只有超級用戶可以任意修改文件的所有者。改變文件權限改變文件權限v 文件權限可以設定當前文件,被所有者、組用戶和公共用戶訪問的權限。其值由4個八進制數表示,第1個八進制數
42、是0,其后每1個八進制數由3個數字相加來表示訪問權限:1表示文件可執行,2表示文件可寫,4表示文件可讀。v 文件權限第1個數表示所有者對文件的訪問權限,如果所有者對文件有全部訪問權限,那么其值應該是1+2+4=7。v 文件權限第2個數表示組用戶對文件的訪問權限,如果組用戶對文件有可讀、可執行的權限,那么其值應該是1+4=5。v 文件權限第3個數表示公共用戶對文件的訪問權限,如果公共用戶對文件只有可讀權限,那么其值應該是1。文件操作的錯誤處理文件操作的錯誤處理v在文件操作過程中,由于權限、途徑、文件名等不確定的因素,文件系統函數在操作文件時,會產生錯誤,為了避免錯誤產生,應在操作文件之前,就對文
43、件進檢測。本節主要介紹用于文件系統錯誤處理的函數。判斷給定文件名是否是目錄判斷給定文件名是否是目錄v由于文件與目錄的操作函數是不能通用的,所以在不確定給定的變量是文件名或目錄的情況下,可以使用is_dir()函數進行檢測,判斷給定文件名是否可執行判斷給定文件名是否可執行v 使用is_executable()函數,可以檢測指定文件是否為可執行文件,如果測試文件存在,并可以執行,函數將返回TRUE,否則返回FALSE.v ?phpv /建立一個判斷文件是否可以執行的函數v function isexec($file)v if(is_executable($file)v echo 文件$file可執
44、行;v elseecho 文件$file不可執行;v v /定義存儲文件名的變量v $file = html/contents.txt;v /使用函數判斷這些變量v isexec($file);v ?判斷給定文件名是否是文件判斷給定文件名是否是文件v使用is_file()函數,可以檢測指定文件是否為文件,如果是文件函數將返回TRUE,否則返回FALSE,is_file()函數演示代碼如清單所示。判斷指定文件是否可讀判斷指定文件是否可讀v服務器端的腳本程序,訪問文件系統時,使用的一般都是公共用戶。由于公共用戶的權限會受到一些限制,當文件權限不確定的情況下,可以使用is_readable()函數,
45、測試指定文件是否可讀。判斷文件是否是通過判斷文件是否是通過HTTP POST上傳的上傳的v使用HTML表單通過POST上傳文件時,出于安全方面的考慮,可以使用is_uploaded_file()對上傳的文件進行檢測,is_uploaded_file()有1個必選參數,其值是文件上傳變量的臨時文件名。下面演示is_uploaded_file()函數的使用方法,vis_uploaded_file()函數運行后,如果臨時文件是使用權HTTP POST方式上傳的,將返回TRUE值,否則返回FALSE值。判斷給定的文件名是否可寫判斷給定的文件名是否可寫v 當文件權限不確定的情況下,可以使用當文件權限不確
46、定的情況下,可以使用is_writable()函數,測試指定文件是否可寫。函數,測試指定文件是否可寫。v ?phpv /建立一個判斷文件名是否可寫的函數建立一個判斷文件名是否可寫的函數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 /使用函數判斷這些變量使用函數判斷這些變量v testw
47、rite($file1);v testwrite($file1);v ?檢查文件或目錄是否存在檢查文件或目錄是否存在v 在使用文件系統函數時,除了權限問題可以引起錯誤外,要操作的文件或目錄是否存在,也經常引發錯誤。在PHP中,可以使用file_exists()函數,檢查指定目錄或文件是否存在。路徑與磁盤操作路徑與磁盤操作v文件系統函數操作文件的同時,一定會涉及到對路徑的相關操作。路徑又分為相對路徑和絕對路徑,相對路徑是以操作的文件所在目錄為起點的路徑;絕對路徑是以當前文件所在盤符為起點的路徑。本節主要介紹關于路徑和磁盤方面的函數。獲取文件路徑的信息獲取文件路徑的信息v使用pathinfo()函數,可以對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 徽縣特崗面試真題及答案
- 黃石教資面試真題及答案
- 榆次二模試題及答案英語
- 家具行業的市場營銷對產品設計的指導作用研究試題及答案
- 新能源汽車技術的質量保障體系試題及答案
- 砂輪機安全試題及答案
- 粗苯工藝培訓試題及答案
- 家具行業的人才需求與培養問題試題及答案
- 民辦教育機構2025年合規運營風險防范與品牌影響力提升分析
- 醫藥企業研發外包(CRO)模式在2025年的國際合作與本土化發展報告
- 全球汽車產業發展現狀與趨勢
- T-COFA 0021-2022 漁用油電混合多旋翼無人機安全檢查和維 護保養要求
- 2025貴州畢節市七星關區招聘城市社區工作者186人筆試備考題庫及答案解析
- 2025屆河北省“五個一”名校聯盟高三下學期4月聯考化學試題(含答案)
- 山東省泰安市2025屆高三二輪模擬檢測考試政治(泰安二模)(含答案)
- 2025-2030中國環境監測發展分析及發展趨勢與投資前景研究報告
- 2025年教師資格證面試結構化模擬題:教師心理健康維護試題集
- 大疆精靈4 RTK無人機操作與測繪培訓指南
- 2025屆江蘇省南京一中高三第二次模擬考試物理試卷含解析
- 初中語文第16課《有為有不為》課件-2024-2025學年統編版語文七年級下冊
- 2025年內蒙古化工職業學院單招職業技能考試題庫必考題
評論
0/150
提交評論