基于PHP常用文件函數(shù)和目錄函數(shù)整理
一、常用文件函數(shù)庫
1、basename(); -- 返回路徑中的文件名部分。
string basename ( string $path [, string $suffix ] ) //給出一個(gè)包含有指向一個(gè)文件的全路徑的字符串,本函數(shù)返回基本的文件名。
參數(shù):path 一個(gè)路徑。在 Windows 中,斜線(/)和反斜線(\)都可以用作目錄分隔符。在其它環(huán)境下是斜線(/)
suffix 如果文件名是以 suffix 結(jié)束的,那這一部分也會(huì)被去掉。
返回值:返回 path 的基本的文件名。
$path = 'd:/test/test.txt'; echo basename($path); echo "<br>"; echo basename($path,'.txt');
2、dirname(); -- 返回路徑中目錄部分
string dirname ( string $path ) //給出一個(gè)包含有指向一個(gè)文件的全路徑的字符串,本函數(shù)返回去掉文件名后的目錄名?!?/pre>
參數(shù):path,一個(gè)路徑。在 Windows 中,斜線(/)和反斜線(\)都可以用作目錄分隔符。在其它環(huán)境下是斜線(/)。
返回值:返回 path 的父目錄。 如果在 path 中沒有斜線,則返回一個(gè)點(diǎn)('.'),表示當(dāng)前目錄。否則返回的是把path 中結(jié)尾的 /component(最后一個(gè)斜線以及后面部分)去掉之后的字符串。
$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() 返回一個(gè)關(guān)聯(lián)數(shù)組包含有 path 的信息。返回關(guān)聯(lián)數(shù)組還是字符串取決于 options?! ?/pre>
參數(shù): path 要解析的路徑?! ?/p>
options 如果指定了,將會(huì)返回指定元素;它們包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和PATHINFO_EXTENSION 或 PATHINFO_FILENAME。如果沒有指定 options 默認(rèn)是返回全部的單元?!?/p>
返回值:如果沒有傳入 options ,將會(huì)返回包括以下單元的數(shù)組 array:dirname,basename 和 extension(如果有),以 及filename?! ?/p>
$path = 'd:/test/test.txt'; var_dump(pathinfo($path));
4、filetype();--取得文件類型
string filetype ( string $filename ) //返回文件的類型。
參數(shù): filename 文件的路徑。
返回值: 返回文件的類型。
可能的值有 fifo,char,dir,block,link,file 和 unknown。如果出錯(cuò)則返回 FALSE。如果 stat 調(diào)用失敗或者文件類型未知的話 filetype() 還會(huì)產(chǎn)生一個(gè) E_NOTICE 消息。
$path = 'd:/test/test.txt'; echo filetype($path); //結(jié)果file
5、fstat()和stat();
⑴、fstat()-通過已打開的文件指針取得文件信息
array fstat ( resource $handle ) //獲取由文件指針 handle 所打開文件的統(tǒng)計(jì)信息。本函數(shù)和 stat() 函數(shù)相似,除了它是作用于已打開的文件指針而不是文件名。
參數(shù): handle 文件系統(tǒng)指針,是典型地由 fopen() 創(chuàng)建的 resource(資源)。
返回值: 返回一個(gè)數(shù)組具有該文件的統(tǒng)計(jì)信息,該數(shù)組的格式詳細(xì)說明于手冊中 stat() 頁面里。
⑵、stat() --給出文件的信息
array stat ( string $filename ) //獲取由 filename 指定的文件的統(tǒng)計(jì)信息。如果 filename 是符號(hào)連接,則統(tǒng)計(jì)信息是關(guān)于被連接文件本身的,而不是符號(hào)連接。 //lstat() 和 stat() 相同,只除了它會(huì)返回符號(hào)連接的狀態(tài)。
參數(shù):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 ) //取得指定文件的大小。
參數(shù):filename 文件的路徑。
返回值:返回文件大小的字節(jié)數(shù),如果出錯(cuò)返回 FALSE 并生成一條 E_WARNING 級的錯(cuò)誤。
<?php // 輸出類似:test.txt: bytes $filename = 'd:/test/test.txt'; echo $filename . ': ' . filesize($filename) . ' bytes'; ?> //結(jié)果:d:/test/test.txt: 12 bytes
7、disk_free_space(); -- 返回目錄中的可用空間
float disk_free_space ( string $directory ) //給出一個(gè)包含有一個(gè)目錄的字符串,本函數(shù)將根據(jù)相應(yīng)的文件系統(tǒng)或磁盤分區(qū)返回可用的字節(jié)數(shù)?!?/pre>
參數(shù):directory 文件系統(tǒng)目錄或者磁盤分區(qū)。
header("Content-Type:Text/html;charset=utf8"); $path = 'd:/test/test.txt'; $df = disk_free_space("d:/"); echo $df."字節(jié)";
8、disk_total_space(); --返回一個(gè)目錄的磁盤總大小
float disk_total_space ( string $directory ) //給出一個(gè)包含有一個(gè)目錄的字符串,本函數(shù)將根據(jù)相應(yīng)的文件系統(tǒng)或磁盤分區(qū)返回所有的字節(jié)數(shù)。 【譯者注】本函數(shù)返回的是該目錄所在的磁盤分區(qū)的總大小,因此在給出同一個(gè)磁盤分區(qū)的不同目錄作為參數(shù)所得到的結(jié)果完全相同。 在 Unix 和 Windows 200x/XP 中都支持將一個(gè)磁盤分區(qū)加載為一個(gè)子目錄,這時(shí)正確使用本函數(shù)就很有意義。
參數(shù):directory 文件系統(tǒng)的目錄或者磁盤分區(qū)
9、fopen($filepath,$mode)
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) //fopen() 將 filename 指定的名字資源綁定到一個(gè)流上
參數(shù):filename 如果 filename 是 "scheme://..." 的格式,則被當(dāng)成一個(gè) URL,PHP 將搜索協(xié)議處理器(也被稱為封裝協(xié)議)來處理此模式。如果該協(xié)議尚未注冊封裝協(xié)議,PHP 將發(fā)出一條消息來幫助檢查腳本中潛在的問題并將 filename 當(dāng)成一個(gè)普通的文件名繼續(xù)執(zhí)行下去。
mode |
說明 |
---|---|
'r' | 只讀方式打開,將文件指針指向文件頭。 |
'r+' | 讀寫方式打開,將文件指針指向文件頭。 |
'w' | 寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。 |
'w+' | 讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。 |
'a' | 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。 |
'a+' | 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。 |
'x' | 創(chuàng)建并以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE ,并生成一條 E_WARNING 級別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建之。這和給 底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標(biāo)記是等價(jià)的。 |
'x+' | 創(chuàng)建并以讀寫方式打開,其他的行為和 '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:password@example.com/somefile.txt", "w"); ?>
10、file();--把整個(gè)文件讀入一個(gè)數(shù)組中
array file ( string $filename [, int $flags = 0 [, resource $context ]] ) //把整個(gè)文件讀入一個(gè)數(shù)組中。
參數(shù):filename 文件的路徑。
flags 可選參數(shù) flags 可以是以下一個(gè)或多個(gè)常量:
1、FILE_USE_INCLUDE_PATH 在 include_path 中查找文件。
2、FILE_IGNORE_NEW_LINES 在數(shù)組每個(gè)元素的末尾不要添加換行符
3、FILE_SKIP_EMPTY_LINES 跳過空行。
context 一個(gè)上下文資源,創(chuàng)建stream_context_create()函數(shù)。
<?php // 將一個(gè)文件讀入數(shù)組。本例中通過 HTTP 從 URL 中取得 HTML 源文件。 $lines = file('http://www.example.com/'); // 在數(shù)組中循環(huán),顯示 HTML 的源文件并加上行號(hào)。 foreach ($lines as $line_num => $line) { echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n"; } // 另一個(gè)例子將 web 頁面讀入字符串。參見 file_get_contents()。 $html = implode('', file('http://www.example.com/')); // 從 PHP 5 開始可以使用可選標(biāo)記參數(shù) $trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); ?>
11、file_get_contents();-- 將整個(gè)文件讀入一個(gè)字符串
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] ) //和 file() 一樣,只除了 file_get_contents() 把文件讀入一個(gè)字符串。將在參數(shù) offset 所指定的位置開始讀取長度為 maxlen 的內(nèi)容。如果失敗,file_get_contents() 將返回 FALSE?! ?
參數(shù):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; //結(jié)果 //this is test //this is test
12、fgets();--從文件指針中讀取一行
string fgets ( resource $handle [, int $length ] ) //從文件指針中讀取一行?!?/pre>
參數(shù):handle:文件指針必須是有效的,必須指向由 fopen() 或 fsockopen() 成功打開的文件(并還未由 fclose() 關(guān)閉)。
length:從 handle 指向的文件中讀取一行并返回長度最多為 length - 1 字節(jié)的字符串。碰到換行符(包括在返回值中)、EOF 或者已經(jīng)讀取了 length - 1 字節(jié)后停止(看先碰到那一種情況)。如果沒有指定length,則默認(rèn)為 1K,或者說 1024 字節(jié)。
13、ftell();-- 返回文件指針讀/寫的位置
int ftell ( resource $handle ) //返回由 handle 指定的文件指針的位置,也就是文件流中的偏移量?!?/pre>
參數(shù):handle : 文件指針必須是有效的,且必須指向一個(gè)通過 fopen() 或 popen() 成功打開的文件。在附加模式(加參數(shù) "a" 打開文件)中 ftell() 會(huì)返回未定義錯(cuò)誤。
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); // 結(jié)果3 fclose($fp);
14、fseek();--在文件指針中定位
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] ) //在與 handle 關(guān)聯(lián)的文件中設(shè)定文件指針位置。 新位置從文件頭開始以字節(jié)數(shù)度量,是以 whence 指定的位置加上 offset。
參數(shù) :handle:文件系統(tǒng)指針,是典型地由 fopen() 創(chuàng)建的 resource(資源)。
offset:偏移量。要移動(dòng)到文件尾之前的位置,需要給 offset 傳遞一個(gè)負(fù)值,并設(shè)置 whence 為 SEEK_END。
whence values are:
1、SEEK_SET - 設(shè)定位置等于 offset 字節(jié)。
2、SEEK_CUR - 設(shè)定位置為當(dāng)前位置加上 offset。
3、SEEK_END - 設(shè)定位置為文件尾加上 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() 允許執(zhí)行一個(gè)簡單的可以在任何平臺(tái)中使用的讀取/寫入模型(包括大部分的 Unix 派生版和甚至是 Windows)?! ?
參數(shù):handle 文件系統(tǒng)指針,是典型地由 fopen() 創(chuàng)建的 resource(資源)。
operation 可以是以下值之一:
1、LOCK_SH取得共享鎖定(讀取的程序)。
2、LOCK_EX 取得獨(dú)占鎖定(寫入的程序。
3、LOCK_UN 釋放鎖定(無論共享或獨(dú)占)。
如果不希望 flock() 在鎖定時(shí)堵塞,則是 LOCK_NB(Windows 上還不支持)。
wouldblock:如果鎖定會(huì)堵塞的話(EWOULDBLOCK 錯(cuò)誤碼情況下),可選的第三個(gè)參數(shù)會(huì)被設(shè)置為 TRUE。(Windows 上不支持)
if (flock($fp, LOCK_EX)) { // 進(jìn)行排它型鎖定 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 ) //判斷給定文件名是否存在并且可讀?!?/pre>
參數(shù):filename:文件的路徑。
返回值:如果由 filename 指定的文件或目錄存在并且可讀則返回 TRUE,否則返回 FALSE?!?/p>
$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 參數(shù)可以是一個(gè)允許進(jìn)行是否可寫檢查的目錄名。
參數(shù):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 指定)。 只有超級用戶可以改變文件的所有者。
參數(shù):filename:文件路徑。
user:用戶名或數(shù)字。
二、目錄函數(shù)
1、is_dir();--判斷給定文件名是否是一個(gè)目錄
bool is_dir ( string $filename ) //判斷給定文件名是否是一個(gè)目錄?!?/pre>
參數(shù):filename:如果文件名存在并且為目錄則返回 TRUE。如果 filename 是一個(gè)相對路徑,則按照當(dāng)前工作目錄檢查其相對路徑。
$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 ]]] )//嘗試新建一個(gè)由 pathname 指定的目錄。
參數(shù):pathname:目錄的路徑。
mode:默認(rèn)的 mode 是 0777,意味著最大可能的訪問權(quán)。有關(guān) mode 的更多信息請閱讀 chmod() 頁面。
mkdir("d:/test/test1", 0700);
3、opendir();--打開目錄句柄
resource opendir ( string $path [, resource $context ] ) //打開一個(gè)目錄句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 調(diào)用中?!?/pre>
參數(shù):path 要打開的目錄路徑
context 參數(shù)的說明見手冊中的 Streams API 一章。
4、readdir();--從目錄句柄中讀取條目
string readdir ([ resource $dir_handle ] ) //返回目錄中下一個(gè)文件的文件名。文件名以在文件系統(tǒng)中的排序返回?!?/pre>
參數(shù):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"; } /* 這是錯(cuò)誤地遍歷目錄的方法 while ($file = readdir($handle)) { echo "$file\n"; } */ closedir($handle); }
以上這篇基于PHP常用文件函數(shù)和目錄函數(shù)整理就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
30分鐘學(xué)會(huì)用PHP寫帶數(shù)據(jù)庫的簡單通訊錄
這篇文章主要給大家介紹了關(guān)于30分鐘學(xué)會(huì)用PHP寫帶數(shù)據(jù)庫的簡單通訊錄,需要的朋友可以參考下2006-12-12PHP輸出控制功能在簡繁體轉(zhuǎn)換中的應(yīng)用
PHP輸出控制功能在簡繁體轉(zhuǎn)換中的應(yīng)用...2006-10-10