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:

echofiletype('/etc/passwd'); // file
echofiletype('/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:(同上,換掉函數)

另:如需要計算一個目錄大小,可以編寫一個遞歸函數來實現

ExpandedBlockStart.gif代碼
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);
}elseif(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:

ExpandedBlockStart.gif代碼
$lines=file('http://www.example.com/');
// 在數組中循環,顯示 HTML 的源文件並加上行號。
foreach ($linesas$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:

ExpandedBlockStart.gif代碼
// 注意在 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文件是否可讀

boolis_readable ( string filename )

如果由 filename 指定的文件或目錄存在並且可讀則返回 TRUE

記住 PHP 也許只能以運行 webserver 的用戶名(通常爲 'nobody')來訪問文件。不計入安全模式的限制。

2 文件是否可寫

bool is_writable ( string filename )

如果文件存在並且可寫則返回 TRUEfilename 參數可以是一個允許進行是否可寫檢查的目錄名。

記住 PHP 也許只能以運行 webserver 的用戶名(通常爲 'nobody')來訪問文件。不計入安全模式的限制

3 檢查文件是否存在

boolfile_exists ( string filename )

如果由 filename 指定的文件或目錄存在則返回 TRUE,否則返回 FALSE

=====================================PHP文件操作類=========================================

  1. <?php  

  2. /***************************************************************************************

  3. 文件名:File.cls.php

  4. 文件簡介:類clsFile的定義,對文件操作的封裝

  5. 版本:2.0  最後修改日期:2011-8-23

  6. ****************************************************************************************/

  7. !defined('INIT_PHPV') && die('No direct script access allowed');  

  8. class clsFile  

  9. {  

  10. private$fileName_str;         //文件的路徑

  11. private$fileOpenMethod_str;   //文件打開模式

  12. function __construct($fileName_str='',$fileOpenMethod_str='readOnly')//路徑,默認爲空;模式,默認均爲只讀

  13.   {  

  14. //構造函數,完成數據成員的初始化

  15. $this->fileName_str=$fileName_str;  

  16. $this->fileOpenMethod_str=$fileOpenMethod_str;  

  17.   }  

  18. function __destruct()  

  19.   {  

  20. //析構函數

  21.   }  

  22. publicfunction __get($valName_val)//欲取得的數據成員名稱

  23.   {  

  24. //特殊函數,取得指定名稱數據成員的值












http://blog.csdn.net/hurryjiang/article/details/6712505

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章