溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php文件夾與文件目錄的操作函數(shù)有哪些

發(fā)布時(shí)間:2021-10-11 09:39:56 來(lái)源:億速云 閱讀:140 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“php文件夾與文件目錄的操作函數(shù)有哪些”,在日常操作中,相信很多人在php文件夾與文件目錄的操作函數(shù)有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”php文件夾與文件目錄的操作函數(shù)有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

php文件夾操作函數(shù)

string basename ( string path [, string suffix] )
給出一個(gè)包含有指向一個(gè)文件的全路徑的字符串,本函數(shù)返回基本的文件名。如果文件名是以 suffix 結(jié)束的,那這一部分也會(huì)被去掉。
在 Windows 中,斜線(/)和反斜線()都可以用作目錄分隔符。在其它環(huán)境下是斜線(/)。

string dirname ( string path )

給出一個(gè)包含有指向一個(gè)文件的全路徑的字符串,本函數(shù)返回去掉文件名后的目錄名。
在 Windows 中,斜線(/)和反斜線()都可以用作目錄分隔符。在其它環(huán)境下是斜線(/)。

array pathinfo ( string path [, int options] )

pathinfo() 返回一個(gè)聯(lián)合數(shù)組包含有 path 的信息。包括以下的數(shù)組單元:dirname,basename 和 extension。
可以通過(guò)參數(shù) options 指定要返回哪些單元。它們包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION。默認(rèn)是返回全部的單元。

string realpath ( string path )

realpath() 擴(kuò)展所有的符號(hào)連接并且處理輸入的 path 中的 ‘/./', ‘/../' 以及多余的 ‘/' 并返回規(guī)范化后的絕對(duì)路徑名。返回的路徑中沒(méi)有符號(hào)連接,'/./' 或 ‘/../' 成分。
realpath() 失敗時(shí)返回 FALSE,比如說(shuō)文件不存在的話。在 BSD 系統(tǒng)上,如果僅僅是 path 不存在的話,PHP 并不會(huì)像其它系統(tǒng)那樣返回 FALSE。

bool is_dir ( string filename )

如果文件名存在并且為目錄則返回 TRUE。如果 filename 是一個(gè)相對(duì)路徑,則按照當(dāng)前工作目錄檢查其相對(duì)路徑。
注: 本函數(shù)的結(jié)果會(huì)被緩存。更多信息參見(jiàn) clearstatcache()。

resource opendir ( string path [, resource context] )

打開(kāi)一個(gè)目錄句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 調(diào)用中。

string readdir ( resource dir_handle )

返回目錄中下一個(gè)文件的文件名。文件名以在文件系統(tǒng)中的排序返回。

void closedir ( resource dir_handle )

關(guān)閉由 dir_handle 指定的目錄流。流必須之前被 opendir() 所打開(kāi)。

void rewinddir ( resource dir_handle )

將 dir_handle 指定的目錄流重置到目錄的開(kāi)頭。

array glob ( string pattern [, int flags] )

glob() 函數(shù)依照 libc glob() 函數(shù)使用的規(guī)則尋找所有與 pattern 匹配的文件路徑,類(lèi)似于一般 shells 所用的規(guī)則一樣。不進(jìn)行縮寫(xiě)擴(kuò)展或參數(shù)替代。
返回一個(gè)包含有匹配文件/目錄的數(shù)組。如果出錯(cuò)返回 FALSE。

有效標(biāo)記為:
GLOB_MARK - 在每個(gè)返回的項(xiàng)目中加一個(gè)斜線
GLOB_NOSORT - 按照文件在目錄中出現(xiàn)的原始順序返回(不排序)
GLOB_NOCHECK - 如果沒(méi)有文件匹配則返回用于搜索的模式
GLOB_NOESCAPE - 反斜線不轉(zhuǎn)義元字符
GLOB_BRACE - 擴(kuò)充 {a,b,c} 來(lái)匹配 ‘a(chǎn)','b' 或 ‘c'
GLOB_ONLYDIR - 僅返回與模式匹配的目錄項(xiàng)

注: 在 PHP 4.3.3 版本之前 GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 庫(kù)的系統(tǒng)上不可用。
GLOB_ERR - 停止并讀取錯(cuò)誤信息(比如說(shuō)不可讀的目錄),默認(rèn)的情況下忽略所有錯(cuò)誤
注: GLOB_ERR 是 PHP 5.1 添加的。

php文件目錄操作

新建文件
1、先確定要寫(xiě)入文件的內(nèi)容
$content = '你好';
2、打開(kāi)這個(gè)文件(系統(tǒng)會(huì)自動(dòng)建立這個(gè)空文件)
//假設(shè)新建的文件叫file.txt,而且在上級(jí)目錄下。w表示‘寫(xiě)文件',$fp下面要用到,表示指向某個(gè)打開(kāi)的文件。
$fp = fopen('../file.txt', 'w');
3、將內(nèi)容字符串寫(xiě)入文件
//$fp告訴系統(tǒng)要寫(xiě)入的文件,寫(xiě)入的內(nèi)容是$content
fwrite($fp, $content);
4、關(guān)閉文件
fclose($fp);
說(shuō)明:PHP5中提供了更方便的函數(shù)file_put_contents,上面的4步可以這樣完成:
$content = '你好';
file_put_contents('file.txt',$content);

刪除文件
//刪除當(dāng)前目錄下的arch目錄下的文件abc.txt
unlink('arch/abc.txt');
說(shuō)明:系統(tǒng)會(huì)返回操作結(jié)果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否刪除成功:
$deleteResult = unlink('arch/abc.txt');

獲取文件內(nèi)容
//假設(shè)獲取的目標(biāo)文件名是file.txt,而且在上級(jí)目錄下。獲取的內(nèi)容放入$content。
$content = file_get_contents('../file.txt');

修改文件內(nèi)容
操作方法與新建內(nèi)容基本一樣

重命名文件或目錄
//將當(dāng)前目錄下的子目錄a下面的文件1.gif重命名為2.gif。
rename('/a/1.gif', '/a/2.gif');
說(shuō)明:對(duì)目錄也一樣。系統(tǒng)會(huì)返回操作結(jié)果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否重命名成功。
$renameResult = rename('/a/1.gif', '/a/2.gif');
如果要移動(dòng)文件或目錄,只要將重命名后的路徑設(shè)置為新的路徑就可以了:
//將當(dāng)前目錄下的子目錄a下面的文件1.gif,移動(dòng)到當(dāng)前目錄下的子目錄b,并且重命名為2.gif。
rename('/a/1.gif', '/b/2.gif');
不過(guò)要注意,如果目錄b不存在,就會(huì)移動(dòng)失敗。

復(fù)制文件
//將當(dāng)前目錄下的子目錄a下面的文件1.gif,復(fù)制到當(dāng)前目錄下的子目錄b,并命名為2.gif。
copy('/a/1.gif', '/b/1.gif');
說(shuō)明:不能對(duì)目錄進(jìn)行此項(xiàng)操作。
如果目標(biāo)文件(上面的/b/1.gif)已經(jīng)存在,原來(lái)的文件將被覆蓋。
系統(tǒng)會(huì)返回操作結(jié)果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否復(fù)制成功。
$copyResult = copy('/a/1.gif', '/b/1.gif');

移動(dòng)文件或目錄
操作方法和重命名一樣

文件或目錄是否存在
//檢查上級(jí)目錄下的文件logo.jpg是否存在。
$existResult = file_exists('../logo.jpg');
說(shuō)明:如果文件存在系統(tǒng)返回true,否則返回false??梢詫?duì)目錄進(jìn)行同樣的操作。

獲取文件大小
//獲取上級(jí)目錄下的文件logo.png的大小。
$size = filesize('../logo.png');
說(shuō)明:系統(tǒng)會(huì)返回一個(gè)數(shù)字,表示文件的大小是多少字節(jié)(bytes)。

新建目錄
//在當(dāng)前目錄下的目錄a下面新建目錄b。
mkdir('/a/b');
說(shuō)明:系統(tǒng)會(huì)返回操作結(jié)果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否新建成功:
$mkResult = mkdir('/a/b');

刪除目錄
//刪除當(dāng)前目錄下的目錄a下面的子目錄b。
rmdir('/a/b');
說(shuō)明:只能刪除非空的目錄,否則必須先刪除目錄下的子目錄和文件,再刪除總目錄
系統(tǒng)會(huì)返回操作結(jié)果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否刪除成功:
$deleteResult = rmdir('/a/b');

獲取目錄中的所有文件名
1、先打開(kāi)要操作的目錄,并用一個(gè)變量指向它
//打開(kāi)當(dāng)前目錄下的目錄pic下的子目錄common。
$handler = opendir('pic/common');
2、循環(huán)的讀取目錄下的所有文件
/*其中$filename = readdir($handler)是每次循環(huán)的時(shí)候?qū)⒆x取的文件名賦值給$filename,為了不陷于死循環(huán),所以還要讓$filename !== false。一定要用!==,因?yàn)槿绻硞€(gè)文件名如果叫'0',或者某些被系統(tǒng)認(rèn)為是代表false,用!=就會(huì)停止循環(huán)*/
while( ($filename = readdir($handler)) !== false )  {
      3、目錄下都會(huì)有兩個(gè)文件,名字為'.'和‘..',不要對(duì)他們進(jìn)行操作
      if($filename != "." && $filename != "..") {
      4、進(jìn)行處理
      //這里簡(jiǎn)單的用echo來(lái)輸出文件名
      echo $filename;
      }
}
5、關(guān)閉目錄
closedir($handler);

對(duì)象是否是目錄
//檢查上級(jí)目錄下的目標(biāo)對(duì)象logo.jpg是否是目錄。
$checkResult = is_dir('../logo.jpg');
說(shuō)明:如果目標(biāo)對(duì)象是目錄系統(tǒng)返回true,否則返回false。上面例子的$checkResult當(dāng)然是false。

對(duì)象是否是文件
//檢查上級(jí)目錄下的目標(biāo)對(duì)象logo.jpg是否是文件。
$checkResult = is_file('../logo.jpg');
說(shuō)明:如果目標(biāo)對(duì)象是文件,系統(tǒng)返回true,否則返回false。上面例子的$checkResult當(dāng)然是true。

到此,關(guān)于“php文件夾與文件目錄的操作函數(shù)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI