細說PHP學習 第十五章 檔案系統處理

2021-07-04 15:11:34 字數 3756 閱讀 7291

要描述乙個檔案的位置,可以使用絕對路徑和相對路徑。unix中必須使用「/」作為路徑分隔符,而在windows中預設使用「\」作為路徑分隔符,在程式中標識時還要將「\」轉義。建議是有「/」作為檔案路徑分隔符。

1. 函式basename()

函式返回路徑中檔名部分。

string

basename (string path[,string suffix])

<?php

$path="/var/www/html/page.php";

echo basename($path);

echo basename($path,".php");

?>

2. 函式dirname()

該函式恰好與basename相反,只需要給出乙個引數,函式返回去掉檔名後的目錄名。

3. 函式pathinfo()取得乙個目錄下的檔案和子目錄,就需要用到opendir()函式、reddir()函式、closedir()函式和rewinddir()函式。

函式opendir()用於開啟指定的目錄,接受乙個目錄的路徑及目錄名作為引數

函式readdir()用於讀取指定的目錄,接受已經用opendir()函式開啟的可操作目錄控制代碼作為引數

函式closedir()關閉指定目錄

函式rewinddir()倒回目錄控制代碼

<?php

//自定義乙個函式dirsize(),統計傳入引數的目錄大小

function

dirsize

($directory)

}closedir($dir_handle); //關閉檔案資源

return

$dir_size; //返回計算後的目錄大小

} }$dir_size = dirsize("phpmyadmin"); //呼叫該函式計算目錄大小

echo round($dir_size/pow(1024,1),2)."kb"; //位元組數轉換為「kb」單位並輸出

?>

要複製乙個包含多級子目錄的目錄,將涉及檔案的複製、目錄建立等操作,複製乙個檔案可以通過php提供的copy()函式完成,建立目錄可以使用mkdir()函式。

<?php 

function copydir($dirsrc,$dirto)

if(!file_exists($dirto))

if($dir_handle=@opendir($dirsrc))

if(is_file($subsrcfile))}}

closedir($dir_handle);}}

?>

1. 函式fopen()
resource fopen(string filename,string mode[,bool use_include_path[,resource zcontext]])
第乙個引數需要提供被開啟檔案的url,第二個引數需要提供檔案模式,檔案模式可以告訴作業系統如何處理來自其他人或指令碼的訪問請求,以及一種用來檢查你是否有權訪問這個特定檔案的方法:

開啟乙個檔案為唯讀、只寫或者是讀寫

如果要寫乙個檔案,可以覆蓋所有已有的檔案內容,或者需要將新資料追加到檔案末尾

如果在乙個區分二進位制檔案和純文字檔案的系統上寫乙個檔案,還必須指定採用的方式

2. 函式fclose()

資源型別php的基本型別之一,一旦完成資源的處理,一定要將其關閉,否則可能會出現一些預料不到的錯誤。引數必須是使用fopen()或fsockopen()函式開啟的已存的檔案指標。

int

fwrite(resource handle,string

string[,int length])

第乙個引數需要提供fopen()函式開啟的檔案資源,該函式將第二個引數提供的字串內容輸出到由第乙個引數指定的資源中。如果給出了第三個引數,則fwrite()將在寫入了length個字元時停止,否則將一直寫入。

1. 函式fread()

該函式用來在開啟的檔案中讀取指定長度的字串。

string

fread(int handle,int length)

2. 函式fgets()、fgetc()
string fgets(int handle[,int length])
3. 函式file()

該函式非常有用,與file_get_contents()類似,不需要使用fopen()函式開啟檔案,不同的是file()函式可以把整個檔案讀入到乙個陣列中。

4. 函式readfile()

該函式可以讀取指定的整個檔案,立即輸出到輸出緩衝區,並返回讀取的位元組數。

可以通過ftell()、fseek()、rewind()三個函式對檔案指標進行操作。

int ftell(resource handle)  //返回檔案指標當前位置

int fseek(resource handle,int offset[,int whence]) //移動檔案指標到指定位置

bool rewind(resource handle) //移動檔案指標到檔案的開頭

使用這些函式時,必須提供乙個用fopen()函式開啟的、合法的檔案指標。

在php中提供了flock()函式,可以對檔案使用鎖定機制。當乙個程序在訪問檔案時加上鎖,其他程序要想訪問,則必須等到鎖定被釋放以後。

bool flock(int handle,int operation[,int &wouldblock])
第乙個引數handle必須是乙個已經開啟的檔案資源,第二個引數operation也是必需的,規定使用哪個鎖定型別。

1. 客戶端上傳設定

檔案上傳的最基本方法,是使用html表單選擇本地檔案進行提交,在form表單中可以通過標記選擇本地檔案。如果支援檔案上傳操作,必須在標籤中將enctype和method兩個屬性指明相應的值。

檔案上傳title>

head>

action="upload.php"

method="post"

enctype="multipart/form-data">

type="hidden"

name="max_file_size"

value="1000000">選擇檔案:type="file"

name="myfile">

type="submit"

value="上傳檔案">

body>

html>

2. 在服務端通過php處理上傳
bool is_upload_file(string filename)

bool move_upload_file(string filename,string destination)

header('content-type:attachment;filename="test.gif"');  //傳送描述檔案的頭資訊,附件和檔名

header('content-length:3390'); //傳送指定檔案大小的資訊,單位位元組

第十五章預習

public class yuxi15 else 字串的比較 字串1.equals 字串2 比較兩個字串的值是否相同,返回boolean型別的值.如果相同,則返回真值,否則返回假值.字串1.equalsignorecase 字串2 忽略大小寫比較字串1和字串2.如果都相同則返回真值 否則返回假值 改...

UNP 學習筆記 第十五章

1.描述符傳遞 接收傳送者的憑證用到的時候再看 2.struct sockaddr un 3.socketpair 4.書上有三四個例子,跟著學習一下如何建立乙個unix域套接字1.基礎 2.socketpair 1.unix域套接字往往比通訊兩端位於同乙個主機的tcp套接字快出一倍。2.unix域...

learn with python 第十五章 繼承

第十六章 繼承 16.1繼承 物件導向語言所擁有的特性是繼承,繼承指定義乙個新的類擁有原來類的方法。繼承最大的好處就是可以在不改變現存 的情況下新增新的方法,稱之為繼承是因為新定義的類擁有父類的所有方法。新建立的類知之為子類。繼承是乙個功能強大的特性,某些情況下如果沒有繼承,一些層序幾乎無法實現。同...