以下是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.space3. (同上,換掉函數)
另:如需要計算目錄大小,可以寫遞歸函數來實作
程式碼
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(): 最後修改時間(指僅是內容修改)
1. fopen -- 開啟檔案或URL
'r' 只讀方式打開,將檔案指標指向檔案頭。
'r+' 讀寫方式打開,將檔案指標指向檔案頭。
'w' 寫入方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果文件不存在則嘗試建立之。
'w+' 讀寫方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果文件不存在則嘗試建立之。
'a' 寫入方式打開,將文件指標指向文件末尾。如果文件不存在則嘗試建立之。
'a+' 讀寫方式打開,將文件指標指向文件末尾。如果文件不存在則嘗試建立之。
'x' 建立並以寫入方式打開,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並傳回 FALSE,
'x+' 建立並以讀寫方式打開,將檔案指標指向檔案頭。如果檔案已存在,則fopen() 呼叫失敗並回傳FALSE
eg:
$handle = fopen("/home/rasmus/file.txt", "r");
和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 位元組。
$handle = @fopen("/tmp/inputfile.txt", "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); echo $buffer; } fclose($handle); }
和 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 -- 列出指定路徑中的檔案和目錄(很有用),傳回一個 directory 中的檔案和目錄。
預設的排序順序是按字母升序排列。如果使用了可選參數 sorting_order(設為 1),則排序順序是按字母降序排列。eg:
$dir = '/tmp'; $files1 = scandir($dir); $files2 = scandir($dir, 1); print_r($files1); print_r($files2);
另外注:
七、 对文件属性的操作(操作系统环境不同,可能有所不一样,这点要注意)
1文件是否可读:
boolis_readable ( string filename )
如果由 filename 指定的文件或目录存在并且可读则返回 TRUE。
记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。
2 文件是否可写
bool is_writable ( string filename )
如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名。
记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制
3 检查文件是否存在
boolfile_exists ( string filename )
如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE
以上就是(进阶篇) PHP常用的文件操作函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!