PHP經常使用的文件操做函數集錦

一 、解析路徑:php

1 得到文件名:
basename();
給出一個包含有指向一個文件的全路徑的字符串,本函數返回基本的文件名。若是文件名是以 suffix 結束的,那這一部分也會被去掉。
eg:
html

$path   =   " /home/httpd/html/index.php " ;
$file   =   basename ( $path , " .php " );  //  $file is set to "index"

 

2 獲得目錄部分:
dirname();
給出一個包含有指向一個文件的全路徑的字符串,本函數返回去掉文件名後的目錄名。
eg:
web

$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 [ ' extension ' ]

 
2、文件類型
1. filetype();
返回文件的類型。可能的值有 fifo,char,dir,block,link,file 和 unknown。
eg:
安全

echo   filetype ( ' /etc/passwd ' );  //  file
echo   filetype ( ' /etc/ ' );         //  dir

 
3、獲得給定文件有用信息數組(頗有用)函數

1. fstat();
經過已打開的文件指針取得文件信息
獲取由文件指針 handle 所打開文件的統計信息。本函數和 stat() 函數類似,除了它是做用於已打開的文件指針而不是文件名。
eg:
spa

 

//  打開文件
$fp   =   fopen ( " /etc/passwd " ,   " r " );
//  取得統計信息
$fstat   =   fstat ( $fp );
//  關閉文件
fclose ( $fp );
//  只顯示關聯數組部分
print_r ( array_slice ( $fstat ,   13 ));

2. stat()
獲取由 filename 指定的文件的統計信息(類比fstat())
操作系統

4、計算大小
1. filesize()
返回文件大小的字節數,若是出錯返回 FALSE 並生成一條 E_WARNING 級的錯誤。
eg:
指針

//  輸出相似:somefile.txt: 1024 bytes
$filename   =   ' somefile.txt ' ;
echo   $filename   .   ' '   .   filesize ( $filename .   '  bytes ' ;

 
2. disk_free_space()
得到目錄所在磁盤分區的可用空間(字節單位)
eg
code

//  $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

 

5、 訪問與修改時間
1. fileatime(): 最後訪問時間
2. filectime(): 最後改變時間(任何數據的修改)
3. filemtime(): 最後修改時間(指僅是內容修改)

 

6、 文件的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 );   

 

另外注:

7、 對文件屬性的操做(操做系統環境不一樣,可能有所不同,這點要注意)

    1文件是否可讀

       boolis_readable ( string filename )

         若是由 filename 指定的文件或目錄存在而且可讀則返回 TRUE

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

   文件是否可寫

         bool is_writable ( string filename )

        若是文件存在而且可寫則返回 TRUEfilename 參數能夠是一個容許進行是否可寫檢查的目錄名。

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

   檢查文件是否存在

    boolfile_exists ( string filename )

      若是由 filename 指定的文件或目錄存在則返回 TRUE,不然返回 FALSE

相關文章
相關標籤/搜索