PHP對檔案的處理
PHP 在伺服器端檔案的應用上,相關的範疇不僅僅在於使用者與伺服器資料庫間的各種串連存取操作,也可以通過 PHP 內建的檔案處理函數,來進行一般檔案處理操作。
basename -- 返迴路徑中的檔案名稱部分
文法格式:$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path,".php"); // $file is set to "index"
pathinfo():分析檔案當前路徑
文法格式:$path_parts = pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n"; /www/htdocs 檔案路徑
echo $path_parts["basename"] . "\n"; index.html 檔案與副檔名
echo $path_parts["extension"] . "\n"; html 檔案格式
檔案類型與相關資訊
filesize():計算檔案的大小(byte)
文法格式:$bytes=filesize(“a.txt”);
echo $bytes round($bytes/1024,2);
fileatime():檔案最後一次訪問時間(時間戳記)
文法格式:echo date(“Y-m-d g:i:sa”,fileatime);
filectime():檔案建立時間
文法格式:echo date(“Y-m-d g:i:sa”,filectime);
filemtime():檔案最後一次更新時間
文法格式:echo date(“Y-m-d g:i:sa”,filemtime);
fileperms():檔案屬性以及許可權10進位
文法格式:echo substr(base_convert(fileperms(a.txt),10,8),3);
fileowner():檔案所有者的uid(僅在Linux系統下有用)
文法格式:echo fileowner(“a.txt”);
檔案的操作
'r' 唯讀方式開啟,將檔案指標指向檔案頭。
'r+' 讀寫方式開啟,將檔案指標指向檔案頭。
'w' 寫入方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。
'w+' 讀寫方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。
'a' 寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。
'a+' 讀寫方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。
'x' 建立並以寫入方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支援,僅能用於本地檔案。
'x+' 建立並以讀寫方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支援,僅能用於本地檔案。
fopen() -- 開啟檔案或者 URL
fclose() -- 關閉一個已開啟的檔案指標
fread() -- 讀取檔案內容
fwrite()--寫入檔案
文法格式:if(!$f=@fopen("file03.php","x")){//開啟一個檔案 x方法寫入
die("檔案讀取失敗"); //讀取失敗
}
fwrite($f,"kkkkkkkkkk"); //向那個檔案寫 寫什麼
echo fread($f,10); //讀取這個檔案的內容
fclose($f); 關閉開啟檔案
file() -- 把整個檔案讀入一個數組中
文法格式:$arr=file("file03.php");
print_r($arr); //讀取檔案返回數組
readfile() --讀入一個檔案並寫入到輸出緩衝。
文法格式:$str=readfile("file03.php");
echo $str; 輸出
一個檔案記數器的寫法:
$f=fopen("file03.php","r");
$i=fread($f,1000);
echo "這是您第{$i}次訪問";
fclose($f);
$f=fopen("file03.php","w");
$i++;
fwrite($f,$i);
fclose($f);
````````````````````````````````````````
file_get_contents() – 將整個檔案讀入一個字串
文法格式:file_get_contents(檔案名稱或URL)
file_put_contents() –?將一個字串寫入檔案,和依次調用 fopen(),fwrite() 以及 fclose() 功能一樣
file_put_contents(檔案名稱,寫入資料)
feof() -- 測試檔案指標是否到了檔案結束的位置
ftell() -- 返迴文件指標讀/寫的位置
文法格式ftell(檔案指標)
flock() -- 輕便的諮詢檔案鎖定
文法格式:flock(檔案指標,控制參數)
檔案指標:是一個已經開啟(fopen)的檔案指標控制參數:
“LOCK_SH”表示要取得共用鎖定定(讀取程式),(PHP4.0.1以前版本設定1)。
“LOCK_EX”表示要取得獨佔鎖定(寫入程式),(PHP4.0.1以前版本中設定為 2)。
“LOCK_UN”表示要釋放鎖定(無論共用或獨佔),(PHP4.0.1以前版本中設定為 3)。
“LOCK_NB”表示如果你不希望 flock() 在鎖定時堵塞,則給控制參數再加上這個參數
fseek( ) -- 在檔案指標中定位
文法結構: fseek(檔案指標,移動字元數 [,起始位置常數])
檔案指標:不能用於在 fopen() 中以 “http://” 或 “ftp://” 格式開啟所返回的檔案指標。
移動字元數:為正數時,將檔案指標向前移動指定個數:為負數時,將檔案指標向後移動指定個數:
起始位置常數:
SEEK_CUR - 設定位置為當前位置。
SEEK_SET - 設定位置等於檔案開頭。(預設值)
SEEK_END - 設定位置為檔案尾。
rewind( ) -- 倒迴文件指標的位置,也就是將檔案指標移向檔案的開頭位置。
文法結構: rewind(檔案指標)
注意:如果將檔案以附加(“a” 或者 “a+”)模式開啟,寫入檔案的任何資料總是會被附加在後面,不管檔案指標的位置
chgrp( ) -- 改變檔案所屬的組
文法結構:chgrp(檔案名稱,群組名稱)
filegroup( ) -- 取得檔案的組
文法結構:filegroup(檔案名稱)
chmod( ) -- 改變檔案模式
文法結構:chmod(檔案名稱,許可權常數)755 666
chown( ) -- 改變檔案的所有者
文法結構:chown(檔案名稱,使用者)
fileowner( ) -- 取得檔案的所有者
文法結構:fileowner(檔案名稱)
posix_getpwuid() 來將其解析為使用者名稱。
copy( ) -- 拷貝檔案
文法結構:copy(來源檔案,目的檔案)
傳回型別:bool型,如果成功則返回 TRUE,失敗則返回 FALSE。
參數說明:將來源檔案拷貝到目的檔案。
unlink( ) -- 刪除檔案
文法結構:unlink(目標檔案)
傳回型別:bool型,如果成功則返回 TRUE,失敗則返回 FALSE。
參數說明:刪除指定的目標檔案
rename( ) -- 重新命名一個檔案或目錄
文法結構:rename(舊檔案名稱,新檔案名稱)
傳回型別:bool型,如果成功則返回 TRUE,失敗則返回 FALSE。
參數說明:嘗試把舊檔案名稱重新命名為新檔案名稱。
檔案屬性處理
file_exists( ) -- 檢查檔案或目錄是否存在
文法結構:file_exists(檔案名稱)
傳回型別:bool型,若存在返回 true,否則返回 false。
filesize( ) -- 取得檔案大小
文法結構:filesize(檔案名稱)
傳回型別:返迴文件大小位元組數,若出錯返回 false.
filetype( ) -- 取得檔案類型
文法結構:filetype(檔案名稱)
傳回型別:返迴文件類型。可能的值有 fifo,char,dir,block,link,file 和 unknown。 出錯則返回 false
is_dir( ) -- 判斷給定檔案名稱是否是一個目錄
文法結構:is_dir(名稱)
傳回型別:如果檔案名稱存在並且是一個目錄則返回 true,否則返回 false。
is_executable( ) -- 判斷給定檔案名稱是否可執行
文法結構:is_executable(名稱)
傳回型別:如果檔案存在且可執行則返回 TRUE,否則返回 FALSE。
is_file( ) -- 判斷給定檔案名稱是否為一個正常的檔案
文法結構:is_file(名稱)
傳回型別:如果檔案存在且為正常的檔案則返回 TRUE。
is_link( ) -- 判斷給定檔案名稱是否為一個符號串連
文法結構:is_link(名稱)
傳回型別:如果檔案存在並且是一個符號串連則返回 true。
is_readable( ) -- 判斷給定檔案名稱是否可讀
文法結構:is_readable(檔案名稱)
傳回型別:如果檔案存在並且可讀則返回 TRUE。
is_writable( ) -- 判斷給定的檔案名稱是否可寫
文法結構:is_writable(檔案名稱)
傳回型別:如果檔案存在並且可寫則返回 TRUE。
實現iterator介面的目錄讀取
Iterator介面的標準方法
current():返回當前列表(list)中的元素值。
next():用於在一個列表中向下移動一個位置。
valid():檢測在當前列表中是否還有下一個元素,如果有,返回true,否則返回false。
rewind():可以訪問指定特徵的元素列表,在開始操作iterator時,會將指標設定在頂部。