PHP文件操作常用函数总结
一 、解析路徑:
1 獲得文件名:
basename();
給出一個包含有指向一個文件的全路徑的字符串,本函數返回基本的文件名。如果文件名是以 suffix 結束的,那這一部分也會被去掉。
eg:
$path?=?"/home/httpd/html/index.php";
$file?=?basename($path,".php");?//?$file?is?set?to?"index"
?
?
2 得到目錄部分:
dirname();
給出一個包含有指向一個文件的全路徑的字符串,本函數返回去掉文件名后的目錄名。
eg:
$path?=?"/etc/passwd";
$file?=?dirname($path);?//?$file?is?set?to?"/etc"
?
?
3 得到路徑關聯數組
pathinfo();
得到一個指定路徑中的三個部分:目錄名,基本名,擴展名。
eg:
$pathinfo?=?pathinfo("www/test/index.html");
var_dump($pathinfo);
//?$path['dirname']
$path['basename']
$path['extenssion']
?
?
二、文件類型
1. filetype();
返回文件的類型。可能的值有 fifo,char,dir,block,link,file 和 unknown。
eg:
echo?filetype('/etc/passwd');?//?file
echo?filetype('/etc/');????????//?dir
?
?
三、得到給定文件有用信息數組(很有用)
1. fstat();
通過已打開的文件指針取得文件信息
獲取由文件指針 handle 所打開文件的統計信息。本函數和 stat() 函數相似,除了它是作用于已打開的文件指針而不是文件名。
eg:
?
//?打開文件
$fp?=?fopen("/etc/passwd",?"r");
//?取得統計信息
$fstat?=?fstat($fp);
//?關閉文件
fclose($fp);
//?只顯示關聯數組部分
print_r(array_slice($fstat,?13));
?
?
2. stat()
獲取由 filename 指定的文件的統計信息(類比fstat())
?
四、計算大小
1. filesize()
返回文件大小的字節數,如果出錯返回 FALSE 并生成一條 E_WARNING 級的錯誤。
eg:
//?輸出類似:somefile.txt:?1024?bytes
$filename?=?'somefile.txt';
echo?$filename?.?':?'?.?filesize($filename)?.?'?bytes';
?
2. disk_free_space()
獲得目錄所在磁盤分區的可用空間(字節單位)
eg
//?$df?包含根目錄下可用的字節數
$df?=?disk_free_space("/");
//在?Windows?下:
disk_free_space("C:");
disk_free_space("D:");
?
3. disk_total_space()
返回一個目錄的磁盤總大小
eg:(同上,換掉函數)
另:如需要計算一個目錄大小,可以編寫一個遞歸函數來實現
代碼
function?dir_size($dir){
$dir_size?=?0;
if($dh?=?@opendir($dir)){
while(($filename?=?readdir($dh))?!=?false){
if($filename?!='.'?and?$filename?!='..'){
?????if(is_file($dir.'/'.$filename)){
$dir_size?+=filesize($dir.'/'.$filename);
}else?if(is_dir($dir.'/'.$filename)){
??????$dir_size?+=dir_size($dir.'/'.$filename);
}
}
???????????????????}#end?while
????????????}#?end?opendir
@closedir($dh);
return?$dir_size;
}?#end?function
?
?
五、 訪問與修改時間
1.?fileatime(): 最后訪問時間
2. filectime(): 最后改變時間(任何數據的修改)
3. filemtime(): 最后修改時間(指僅是內容修改)
?
六、 文件的I/O操作
1. fopen -- 打開文件或者 URL
mode 說明
'r' 只讀方式打開,將文件指針指向文件頭。
'r+' 讀寫方式打開,將文件指針指向文件頭。
'w' 寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。
'w+' 讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'x' 創建并以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗并返回 FALSE,
'x+' 創建并以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗并返回 FALSE
eg:
$handle?=?fopen("/home/rasmus/file.txt",?"r");
?
?
2. file -- 把整個文件讀入一個數組中(此函數是很有用的)
和 file_get_contents() 一樣,只除了 file() 將文件作為一個數組返回。數組中的每個單元都是文件中相應的一行,包括換行符在內。如果失敗 file() 返回 FALSE。
eg:
代碼
$lines?=?file('http://www.example.com/');
//?在數組中循環,顯示?HTML?的源文件并加上行號。
foreach?($lines?as?$line_num?=>?$line)?{
echo?"Line?#<b>{$line_num}</b>?:?"?.?htmlspecialchars($line)?.?"<br?/>\n";
}
//?另一個例子將?web?頁面讀入字符串。參見?file_get_contents()。
$html?=?implode('',?file?('http://www.example.com/'));
?
?
3. fgets -- 從文件指針中讀取一行
從 handle 指向的文件中讀取一行并返回長度最多為 length - 1 字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1 字節后停止(看先碰到那一種情況)。如果沒有指定 length,則默認為 1K,或者說 1024 字節。
eg:
$handle?=?@fopen("/tmp/inputfile.txt",?"r");
if?($handle)?{
while?(!feof($handle))?{
$buffer?=?fgets($handle,?4096);
echo?$buffer;
}
fclose($handle);
}
?
?
4. fgetss -- 從文件指針中讀取一行并過濾掉 HTML 標記
和 fgets() 相同,只除了 fgetss 嘗試從讀取的文本中去掉任何 HTML 和 PHP 標記。
?? 可以用可選的第三個參數指定哪些標記不被去掉
?? 另:對的目錄的操作:
1. opendir -- 打開目錄句柄,打開一個目錄句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 調用中。
2. readdir -- 從目錄句柄中讀取條目,返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回。
eg:
?
?
代碼
//?注意在?4.0.0-RC2?之前不存在?!==?運算符
if?($handle?=?opendir('/path/to/files'))?{
echo?"Directory?handle:?$handle\n";
echo?"Files:\n";
??
while?(false?!==?($file?=?readdir($handle)))?{
echo?"$file\n";
}
???
while?($file?=?readdir($handle))?{
echo?"$file\n";
}
?????closedir($handle);
}
?
3. scandir -- 列出指定路徑中的文件和目錄(很有用),返回一個 array,包含有 directory 中的文件和目錄。
默認的排序順序是按字母升序排列。如果使用了可選參數 sorting_order(設為 1),則排序順序是按字母降序排列。
eg:
$dir????=?'/tmp';
$files1?=?scandir($dir);
$files2?=?scandir($dir,?1);
print_r($files1);
print_r($files2);???
?
?
另外注:
七、?對文件屬性的操作 (操作系統環境不同,可能有所不一樣,這點要注意)
? ? 1 文件是否可讀:
? ? ?? bool is_readable ( string filename )
???????? 如果由
filename
指定的文件或目錄存在并且可讀則返回 TRUE。
??????? 記住 PHP 也許只能以運行 webserver 的用戶名(通常為 'nobody')來訪問文件。不計入安全模式的限制。
??? 2? 文件是否可寫
???????? bool is_writable ( string filename )
??????? 如果文件存在并且可寫則返回 TRUE。
filename
參數可以是一個允許進行是否可寫檢查的目錄名。
???????? 記住 PHP 也許只能以運行 webserver 的用戶名(通常為 'nobody')來訪問文件。不計入安全模式的限制
??? 3? 檢查文件是否存在(這個函數很有趣)
??? bool file_exists ( string filename )
????? 如果由
filename
指定的文件或目錄存在則返回 TRUE,否則返回 FALSE
轉載于:https://www.cnblogs.com/xp796/p/5222113.html
總結
以上是生活随笔為你收集整理的PHP文件操作常用函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj 1007 : [HNOI200
- 下一篇: push