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時,會將指針設置在頂部。