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

php文件夾/文件目錄操作函數

編輯:關於PHP編程

本文章來給各位同學總結一下在php中一些常用的文件夾/文件目錄操作函數總結,這些只是簡單的介紹一些基礎方法,希望對入門者有所幫助。  

php文件夾操作函數


string basename ( string path [, string suffix] )

給出一個包含有指向一個文件的全路徑的字符串,本函數返回基本的文件名。如果文件名是以 suffix 結束的,那這一部分也會被去掉。

在 Windows 中,斜線(/)和反斜線()都可以用作目錄分隔符。在其它環境下是斜線(/)。

 

string dirname ( string path )

 

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

在 Windows 中,斜線(/)和反斜線()都可以用作目錄分隔符。在其它環境下是斜線(/)。

 

array pathinfo ( string path [, int options] )

 

pathinfo() 返回一個聯合數組包含有 path 的信息。包括以下的數組單元:dirname,basename 和 extension。

可以通過參數 options 指定要返回哪些單元。它們包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION。默認是返回全部的單元。

 

string realpath ( string path )

 

realpath() 擴展所有的符號連接並且處理輸入的 path 中的 ‘/./’, ‘/../’ 以及多余的 ‘/’ 並返回規范化後的絕對路徑名。返回的路徑中沒有符號連接,’/./’ 或 ‘/../’ 成分。

realpath() 失敗時返回 FALSE,比如說文件不存在的話。在 BSD 系統上,如果僅僅是 path 不存在的話,PHP 並不會像其它系統那樣返回 FALSE。

 


bool is_dir ( string filename )

 

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

注: 本函數的結果會被緩存。更多信息參見 clearstatcache()。

 


resource opendir ( string path [, resource context] )

 

打開一個目錄句柄,可用於之後的 closedir(),readdir() 和 rewinddir() 調用中。


string readdir ( resource dir_handle )

 

返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回。


void closedir ( resource dir_handle )

 

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


void rewinddir ( resource dir_handle )

 

將 dir_handle 指定的目錄流重置到目錄的開頭。

 


array glob ( string pattern [, int flags] )

 

glob() 函數依照 libc glob() 函數使用的規則尋找所有與 pattern 匹配的文件路徑,類似於一般 shells 所用的規則一樣。不進行縮寫擴展或參數替代。

返回一個包含有匹配文件/目錄的數組。如果出錯返回 FALSE。

 

有效標記為: 

GLOB_MARK - 在每個返回的項目中加一個斜線
GLOB_NOSORT - 按照文件在目錄中出現的原始順序返回(不排序)
GLOB_NOCHECK - 如果沒有文件匹配則返回用於搜索的模式
GLOB_NOESCAPE - 反斜線不轉義元字符
GLOB_BRACE - 擴充 {a,b,c} 來匹配 ‘a’,’b’ 或 ‘c’
GLOB_ONLYDIR - 僅返回與模式匹配的目錄項
 

注: 在 PHP 4.3.3 版本之前 GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 庫的系統上不可用。

GLOB_ERR - 停止並讀取錯誤信息(比如說不可讀的目錄),默認的情況下忽略所有錯誤

注: GLOB_ERR 是 PHP 5.1 添加的。

 

php文件目錄操作


新建文件

1、先確定要寫入文件的內容

$content = '你好';

2、打開這個文件(系統會自動建立這個空文件)

//假設新建的文件叫file.txt,而且在上級目錄下。w表示‘寫文件’,$fp下面要用到,表示指向某個打開的文件。

$fp = fopen('../file.txt', 'w');

3、將內容字符串寫入文件

//$fp告訴系統要寫入的文件,寫入的內容是$content

fwrite($fp, $content);

4、關閉文件

fclose($fp); 

說明:PHP5中提供了更方便的函數file_put_contents,上面的4步可以這樣完成:

$content = '你好';

file_put_contents('file.txt',$content);

 

刪除文件

//刪除當前目錄下的arch目錄下的文件abc.txt

unlink('arch/abc.txt');

說明:系統會返回操作結果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否刪除成功:

$deleteResult = unlink('arch/abc.txt');

 

獲取文件內容

//假設獲取的目標文件名是file.txt,而且在上級目錄下。獲取的內容放入$content。

$content = file_get_contents('../file.txt');

 

修改文件內容

操作方法與新建內容基本一樣

 

重命名文件或目錄

//將當前目錄下的子目錄a下面的文件1.gif重命名為2.gif。

rename('/a/1.gif', '/a/2.gif');

說明:對目錄也一樣。系統會返回操作結果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否重命名成功。

$renameResult = rename('/a/1.gif', '/a/2.gif');

如果要移動文件或目錄,只要將重命名後的路徑設置為新的路徑就可以了:

//將當前目錄下的子目錄a下面的文件1.gif,移動到當前目錄下的子目錄b,並且重命名為2.gif。

rename('/a/1.gif', '/b/2.gif');

不過要注意,如果目錄b不存在,就會移動失敗。

 

復制文件

//將當前目錄下的子目錄a下面的文件1.gif,復制到當前目錄下的子目錄b,並命名為2.gif。

copy('/a/1.gif', '/b/1.gif');

說明:不能對目錄進行此項操作。

如果目標文件(上面的/b/1.gif)已經存在,原來的文件將被覆蓋。

系統會返回操作結果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否復制成功。

$copyResult = copy('/a/1.gif', '/b/1.gif');

 

移動文件或目錄

操作方法和重命名一樣

 

文件或目錄是否存在

//檢查上級目錄下的文件logo.jpg是否存在。

$existResult = file_exists('../logo.jpg');

說明:如果文件存在系統返回true,否則返回false。可以對目錄進行同樣的操作。

 

獲取文件大小

//獲取上級目錄下的文件logo.png的大小。

$size = filesize('../logo.png');

說明:系統會返回一個數字,表示文件的大小是多少字節(bytes)。

 

新建目錄

//在當前目錄下的目錄a下面新建目錄b。

mkdir('/a/b');

說明:系統會返回操作結果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否新建成功:

$mkResult = mkdir('/a/b');

 

刪除目錄

//刪除當前目錄下的目錄a下面的子目錄b。

rmdir('/a/b');

說明:只能刪除非空的目錄,否則必須先刪除目錄下的子目錄和文件,再刪除總目錄

系統會返回操作結果,成功則返回 TRUE,失敗則返回 FALSE,可以用變量接收,就知道是否刪除成功:

$deleteResult = rmdir('/a/b');

 

獲取目錄中的所有文件名

1、先打開要操作的目錄,並用一個變量指向它

//打開當前目錄下的目錄pic下的子目錄common。

$handler = opendir('pic/common');

2、循環的讀取目錄下的所有文件

/*其中$filename = readdir($handler)是每次循環的時候將讀取的文件名賦值給$filename,為了不陷於死循環,所以還要讓$filename !== false。一定要用!==,因為如果某個文件名如果叫'0',或者某些被系統認為是代表false,用!=就會停止循環*/

while( ($filename = readdir($handler)) !== false )  {

      3、目錄下都會有兩個文件,名字為'.'和‘..’,不要對他們進行操作

      if($filename != "." && $filename != "..") {

      4、進行處理

      //這裡簡單的用echo來輸出文件名

      echo $filename;

      }

}

5、關閉目錄

closedir($handler);

 

對象是否是目錄

//檢查上級目錄下的目標對象logo.jpg是否是目錄。

$checkResult = is_dir('../logo.jpg');

說明:如果目標對象是目錄系統返回true,否則返回false。上面例子的$checkResult當然是false。

 

對象是否是文件

//檢查上級目錄下的目標對象logo.jpg是否是文件。

$checkResult = is_file('../logo.jpg');

說明:如果目標對象是文件,系統返回true,否則返回false。上面例子的$checkResult當然是true。


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