程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP常用文件函數和目錄函數整理,

PHP常用文件函數和目錄函數整理,

編輯:關於PHP編程

PHP常用文件函數和目錄函數整理,


一、常用文件函數庫

  1、basename(); -- 返回路徑中的文件名部分。

string basename ( string $path [, string $suffix ] )
//給出一個包含有指向一個文件的全路徑的字符串,本函數返回基本的文件名。

  參數:path 一個路徑。在 Windows 中,斜線(/)和反斜線(\)都可以用作目錄分隔符。在其它環境下是斜線(/

   suffix 如果文件名是以 suffix 結束的,那這一部分也會被去掉。

  返回值:返回 path 的基本的文件名。

$path = 'd:/test/test.txt';

echo basename($path);
echo "<br>";
echo basename($path,'.txt');

 


  2、dirname(); -- 返回路徑中目錄部分

string dirname ( string $path )
//給出一個包含有指向一個文件的全路徑的字符串,本函數返回去掉文件名後的目錄名。

  參數:path,一個路徑。在 Windows 中,斜線(/)和反斜線(\)都可以用作目錄分隔符。在其它環境下是斜線(/)。

  返回值:返回 path 的父目錄。 如果在 path 中沒有斜線,則返回一個點('.'),表示當前目錄。否則返回的是把path 中結尾的 /component(最後一個斜線以及後面部分)去掉之後的字符串。

$path = 'd:/test/test.txt';

echo basename($path);
echo "<br>";
echo basename($path,'.txt');
echo "<br>";
echo dirname($path);

 


   3、pathinfo();  --返回文件路徑的信息

mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
//pathinfo() 返回一個關聯數組包含有 path 的信息。返回關聯數組還是字符串取決於 options。
  參數: path  要解析的路徑。
     options 如果指定了,將會返回指定元素;它們包括:PATHINFO_DIRNAMEPATHINFO_BASENAME 和PATHINFO_EXTENSION 或 PATHINFO_FILENAME。如果沒有指定 options 默認是返回全部的單元。
  返回值:如果沒有傳入 options ,將會返回包括以下單元的數組 array:dirnamebasename 和 extension(如果有),以 及filename。   
$path = 'd:/test/test.txt';
var_dump(pathinfo($path));

 


   4、filetype();--取得文件類型

string filetype ( string $filename )
//返回文件的類型。
  參數filename 文件的路徑。
  返回值: 返回文件的類型。 可能的值有 fifo,char,dir,block,link,file 和 unknown。如果出錯則返回 FALSE。如果 stat 調用失敗或者文件類型未知的話 filetype() 還會產生一個 E_NOTICE 消息。
$path = 'd:/test/test.txt';
echo filetype($path);
//結果file

 


  5、fstat()和stat();

   ⑴、fstat()-通過已打開的文件指針取得文件信息

array fstat ( resource $handle )
//獲取由文件指針 handle 所打開文件的統計信息。本函數和 stat() 函數相似,除了它是作用於已打開的文件指針而不是文件名。

  參數: handle 文件系統指針,是典型地由 fopen() 創建的 resource(資源)。

     返回值: 返回一個數組具有該文件的統計信息,該數組的格式詳細說明於手冊中 stat() 頁面裡。  

  ⑵、stat() --給出文件的信息

array stat ( string $filename )
//獲取由 filename 指定的文件的統計信息。如果 filename 是符號連接,則統計信息是關於被連接文件本身的,而不是符號連接。
//lstat() 和 stat() 相同,只除了它會返回符號連接的狀態。

  參數:filename 文件的路徑.

$path = 'd:/test/test.txt';

$fp = fopen("d:/test/test.txt","r");
$fstat = fstat($fp);
fclose($fp);
var_dump($fstat);

 


  6、filesize();--取得文件大小

int filesize ( string $filename )
//取得指定文件的大小。

  參數:filename 文件的路徑。

  返回值:返回文件大小的字節數,如果出錯返回 FALSE 並生成一條 E_WARNING 級的錯誤。

<?php

// 輸出類似:test.txt:   bytes

$filename = 'd:/test/test.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

?>
//結果:d:/test/test.txt: 12 bytes

 


   7、disk_free_space(); -- 返回目錄中的可用空間

float disk_free_space ( string $directory )
//給出一個包含有一個目錄的字符串,本函數將根據相應的文件系統或磁盤分區返回可用的字節數。

  參數:directory  文件系統目錄或者磁盤分區。

header("Content-Type:Text/html;charset=utf8");
$path = 'd:/test/test.txt';
$df = disk_free_space("d:/");
echo $df."字節";

 


  8、disk_total_space(); --返回一個目錄的磁盤總大小

float disk_total_space ( string $directory )
//給出一個包含有一個目錄的字符串,本函數將根據相應的文件系統或磁盤分區返回所有的字節數。 【譯者注】本函數返回的是該目錄所在的磁盤分區的總大小,因此在給出同一個磁盤分區的不同目錄作為參數所得到的結果完全相同。 在 Unix 和 Windows 200x/XP 中都支持將一個磁盤分區加載為一個子目錄,這時正確使用本函數就很有意義。

  參數:directory 文件系統的目錄或者磁盤分區

 


  9、fopen($filepath,$mode) 

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
//fopen() 將 filename 指定的名字資源綁定到一個流上

  參數:filename 如果 filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也被稱為封裝協議)來處理此模式。如果該協議尚未注冊封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將 filename 當成一個普通的文件名繼續執行下去。

    

fopen() 中 mode 的可能值列表 mode說明 'r' 只讀方式打開,將文件指針指向文件頭。 'r+' 讀寫方式打開,將文件指針指向文件頭。 'w' 寫入方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 'w+' 讀寫方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。 'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。 'x' 創建並以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創建之。這和給 底層的 open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。 'x+' 創建並以讀寫方式打開,其他的行為和 'x' 一樣。
<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:[email protected]/somefile.txt", "w");
?>

 


   10、file();--把整個文件讀入一個數組中

array file ( string $filename [, int $flags = 0 [, resource $context ]] )
//把整個文件讀入一個數組中。

  參數:filename 文件的路徑。

     flags 可選參數 flags 可以是以下一個或多個常量:

         1FILE_USE_INCLUDE_PATH 在 include_path 中查找文件。 2、FILE_IGNORE_NEW_LINES 在數組每個元素的末尾不要添加換行符 3、FILE_SKIP_EMPTY_LINES 跳過空行。

     context 一個上下文資源,創建stream_context_create()函數。

<?php
// 將一個文件讀入數組。本例中通過 HTTP 從 URL 中取得 HTML 源文件。
$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/'));
// 從 PHP 5 開始可以使用可選標記參數
$trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
?>

 


  11、file_get_contents();-- 將整個文件讀入一個字符串

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
//和 file() 一樣,只除了 file_get_contents() 把文件讀入一個字符串。將在參數 offset 所指定的位置開始讀取長度為 maxlen 的內容。如果失敗,file_get_contents() 將返回 FALSE。

  參數:filename: 要讀取的文件的名稱。

       use_include_path:As of PHP 5 the FILE_USE_INCLUDE_PATH can be used to trigger include path search.

     context:A valid context resource created with stream_context_create(). 如果你不需要自定義 context,可以用 NULL 來忽略。

header("Content-Type:Text/html;charset=utf8");
// <= PHP 5
$file = file_get_contents('d:/test/test.txt', true);
echo $file.'<br>';
// > PHP 5
$file = file_get_contents('d:/test/test.txt', FILE_USE_INCLUDE_PATH);
echo $file;
//結果
//this is test
//this is test

  


  12、fgets();--從文件指針中讀取一行

string fgets ( resource $handle [, int $length ] )
//從文件指針中讀取一行。

  參數:handle:文件指針必須是有效的,必須指向由 fopen() 或 fsockopen() 成功打開的文件(並還未由 fclose() 關閉)。

            length:從 handle 指向的文件中讀取一行並返回長度最多為 length - 1 字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1 字節後停止(看先碰到那一種情況)。如果沒有指定length,則默認為 1K,或者說 1024 字節。

 


 

  13、ftell();-- 返回文件指針讀/寫的位置

int ftell ( resource $handle )
//返回由 handle 指定的文件指針的位置,也就是文件流中的偏移量。

  參數:handle : 文件指針必須是有效的,且必須指向一個通過 fopen() 或 popen() 成功打開的文件。在附加模式(加參數 "a" 打開文件)中 ftell() 會返回未定義錯誤。

header("Content-Type:Text/html;charset=utf8");
// opens a file and read some data
$fp = fopen("d:/test/test.txt", "r");
$data = fgets($fp, 4);
// where are we ?
echo ftell($fp); // 結果3
fclose($fp);

 


  14、fseek();--在文件指針中定位

int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )
//在與 handle 關聯的文件中設定文件指針位置。 新位置從文件頭開始以字節數度量,是以 whence 指定的位置加上 offset。

  參數 :handle:文件系統指針,是典型地由 fopen() 創建的 resource(資源)。

      offset:偏移量。要移動到文件尾之前的位置,需要給 offset 傳遞一個負值,並設置 whence 為 SEEK_END

      whence values are: 1、SEEK_SET - 設定位置等於 offset 字節。2、SEEK_CUR - 設定位置為當前位置加上 offset。2、SEEK_END - 設定位置為文件尾加上 offset。

header("Content-Type:Text/html;charset=utf8");
$fp = fopen('d:\test\test.txt', 'r');
// read some data
$data = fgets($fp, 4096);
// move back to the beginning of the file
// same as rewind($fp);
 fseek($fp, 0);

 


  15、flock();--輕便的咨詢文件鎖定 

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
//flock() 允許執行一個簡單的可以在任何平台中使用的讀取/寫入模型(包括大部分的 Unix 派生版和甚至是 Windows)。

  參數:handle 文件系統指針,是典型地由 fopen() 創建的 resource(資源)。

      operation 可以是以下值之一:1、LOCK_SH取得共享鎖定(讀取的程序)。2、LOCK_EX 取得獨占鎖定(寫入的程序。3、LOCK_UN 釋放鎖定(無論共享或獨占)。

           如果不希望 flock() 在鎖定時堵塞,則是 LOCK_NB(Windows 上還不支持)。

      wouldblock:如果鎖定會堵塞的話(EWOULDBLOCK 錯誤碼情況下),可選的第三個參數會被設置為 TRUE。(Windows 上不支持)

if (flock($fp, LOCK_EX)) {  // 進行排它型鎖定
    ftruncate($fp, 0);      // truncate file
    fwrite($fp, "Write something here\n");
    fflush($fp);            // flush output before releasing the lock
    flock($fp, LOCK_UN);    // 釋放鎖定
} else {
    echo "Couldn't get the lock!";
}

fclose($fp);

 


  16、is_readable --判斷給定文件名是否可讀

bool is_readable ( string $filename )
//判斷給定文件名是否存在並且可讀。

  參數:filename:文件的路徑。

  返回值:如果由 filename 指定的文件或目錄存在並且可讀則返回 TRUE,否則返回 FALSE。 

$filename = 'd:\test\test.txt';
if (is_readable($filename)) {
    echo 'The file is readable';
} else {
    echo 'The file is not readable';
}
//The file is readable

 


  17、is_writeable -- 判斷給定的文件名是否可寫

bool is_writable ( string $filename )
//如果文件存在並且可寫則返回 TRUE。filename 參數可以是一個允許進行是否可寫檢查的目錄名。

  參數:filename 要檢查的文件名稱。

$filename = 'd:\test\test.txt';
if (is_writeable($filename)) {
    echo 'The file is writeable';
} else {
    echo 'The file is not writeable';
}
//The file is writeable

 


  18、chown(); -- 改變文件的所有者

bool chown ( string $filename , mixed $user )
//嘗試將文件 filename 的所有者改成用戶 user(由用戶名或用戶 ID 指定)。 只有超級用戶可以改變文件的所有者。

  參數:filename:文件路徑。

     user:用戶名或數字。


 

二、目錄函數

  1、is_dir();--判斷給定文件名是否是一個目錄

bool is_dir ( string $filename )
//判斷給定文件名是否是一個目錄。

  參數:filename:如果文件名存在並且為目錄則返回 TRUE。如果 filename 是一個相對路徑,則按照當前工作目錄檢查其相對路徑。

$filename = 'd:\test\test.txt';
var_dump(is_dir('$filename'));    //bool(false) 
var_dump(is_dir('d:\test'));        //bool(true)

 


  2、mkdir();--新建目錄

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
//嘗試新建一個由 pathname 指定的目錄。

  參數:pathname:目錄的路徑。

  mode:默認的 mode 是 0777,意味著最大可能的訪問權。有關 mode 的更多信息請閱讀 chmod() 頁面。

mkdir("d:/test/test1", 0700);

 


  3、opendir();--打開目錄句柄

resource opendir ( string $path [, resource $context ] )
//打開一個目錄句柄,可用於之後的 closedir(),readdir() 和 rewinddir() 調用中。

  參數:path 要打開的目錄路徑

     context 參數的說明見手冊中的 Streams API 一章。


  4、readdir();--從目錄句柄中讀取條目

string readdir ([ resource $dir_handle ] )
//返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回。

  參數:dir_handle 目錄句柄的 resource,之前由 opendir() 打開

header("Content-Type:Text/html;charset=utf8");
if ($handle = opendir('d:/test')) {
    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);
}

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved