以下正文:
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 = '你好';
//假设新建的文件叫file.txt,而且在上级目录下。w表示‘写文件',$fp下面要用到,表示指向某个打开的文件。 $fp = fopen('../file.txt', 'w');
//$fp告诉系统要写入的文件,写入的内容是$content fwrite($fp, $content);
fclose($fp);
回傳操作結果,成功則回傳TRUE,失敗則回傳FALSE,可以用變數接收,就知道是否刪除成功:
$content = '你好'; file_put_contents('file.txt',$content);
取得檔案內容
//删除当前目录下的arch目录下的文件abc.txt unlink('arch/abc.txt');
修改檔案內容
操作方法基本上與新內容一樣
重命名檔案或目錄
$deleteResult = unlink('arch/abc.txt');
說明:對目錄也是一樣。系統會回傳操作結果,成功則回傳 TRUE,失敗則回傳 FALSE,可以用變數接收,就知道是否重新命名成功。
//假设获取的目标文件名是file.txt,而且在上级目录下。获取的内容放入$content。 $content = file_get_contents('../file.txt');
如果要移動檔案或目錄,只要將重命名後的路徑設定為新的路徑就可以了:
//将当前目录下的子目录a下面的文件1.gif重命名为2.gif。 rename('/a/1.gif', '/a/2.gif');
複製檔案
$renameResult = rename('/a/1.gif', '/a/2.gif');
說明:不能對目錄進行此項操作。
如果目標檔案(上面的/b/1.gif)已經存在,原來的檔案將會被覆蓋。
//将当前目录下的子目录a下面的文件1.gif,移动到当前目录下的子目录b,并且重命名为2.gif。 rename('/a/1.gif', '/b/2.gif');移動檔案或目錄
操作方法和重新命名一樣
檔案或目錄是否存在
//将当前目录下的子目录a下面的文件1.gif,复制到当前目录下的子目录b,并命名为2.gif。 copy('/a/1.gif', '/b/1.gif');
說明:如果檔案存在系統傳回true,否則傳回false。可以對目錄進行同樣的操作。
取得檔案大小
$copyResult = copy('/a/1.gif', '/b/1.gif');
說明:系統會傳回一個數字,表示檔案的大小是多少位元組(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。
以上就是(进阶篇)php文件夹与文件目录操作函数介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!