本文章來給各位同學總結一下在php中一些常用的文件夾/文件目錄操作函數總結,這些只是簡單的介紹一些基礎方法做個備注。
1、創建目錄(mkdir)
bool mkdir (string $pathname [,int $mode [,bool $recursive [,resource $context ]]] )
<?php mkdir("/path/to/my/dir", 0777); //成功返回true,失敗返回false;
2、判斷文件是否存在(file_exist)
bool file_exists (string $filename )
<?php $filename = '/path/to/phpernote.txt'; echo file_exists($filename)?'文件存在':'文件不存在';
3、檢查指定的文件是否是目錄,一般也用於判斷目錄是否存在(is_dir)
bool is_dir (string $filename )
<?php var_dump(is_dir('a_file.txt'));// 輸出false var_dump(is_dir('wwwroot/phpernote')); //相對當前目錄檢查wwwroot/phpernote目錄是否存在,存在輸出true,不存在輸出false var_dump(is_dir('..')); //輸出true
注釋:本函數的結果會被緩存。請使用 clearstatcache() 來清除緩存。
4、判斷給定文件名是否為一個正常的文件 (is_file)
bool is_file ( string $filename )
<?php var_dump(is_file('a_file.txt'));//true var_dump(is_file('/usr/bin/'));//false
5、鎖定或釋放文件(flock)
bool flock ( string $filename, string $lock [,mix $block] )
lock 參數可以是以下值之一:
要取得共享鎖定(讀取的程序),將 lock 設為 LOCK_SH(PHP 4.0.1 以前的版本設置為 1)。
要取得獨占鎖定(寫入的程序),將 lock 設為 LOCK_EX(PHP 4.0.1 以前的版本中設置為 2)。
要釋放鎖定(無論共享或獨占),將 lock 設為 LOCK_UN(PHP 4.0.1 以前的版本中設置為 3)。
如果不希望 flock() 在鎖定時堵塞,則給 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中設置為 4)。
block 可選。若設置為 1 或 true,則當進行鎖定時阻擋其他進程。
提示:可以通過 fclose() 來釋放鎖定操作,代碼執行完畢時也會自動調用。例如:
<?php $file = fopen("test.txt","w+"); // 排它性的鎖定 if (flock($file,LOCK_EX)){ if(is_writable($file)) fwrite($file,"www.phpernote.com 總結的文章"); // 解鎖 flock($file,LOCK_UN); }else{ echo "鎖定文件失敗!"; } fclose($file);
6、判斷給定文件名是否為一個符號連接 (is_link)
bool is_link ( string $filename )
<?php var_dump(is_link("a.lnk")); //輸出true
注釋:本函數的結果會被緩存。請使用 clearstatcache() 來清除緩存。
7、刪除目錄 (rmdir)此函數僅刪除空目錄(rmdir)
bool rmdir ( string $dirname )
<?php var_dump(rmdir("/usr/local/a")); //當a為空目錄刪除成功,a為非空目錄刪除失敗
8、刪除文件(unlink)
bool unlink ( string $filename )
<?php while(is_file($wwwphpernotecom) == TRUE){ chmod($wwwphpernotecom, 0666);//設置可讀取,可寫入權限 unlink($wwwphpernotecom); }
9、獲取文件或目錄的權限(fileperms)
mix fileperms ( filename )
<?php //若成功,則返回文件的訪問權限。若失敗,則返回 false echo fileperms("test.txt");//輸出:33206
以八進制值返回權限
<?php echo substr(sprintf("%o",fileperms("test.txt")),-4);//輸出:1777
提示:本函數的結果會被緩存。請使用 clearstatcache() 來清除緩存。
10、獲取指定文件或目錄的類型(filetype)
mix filetype ( filename )
若成功,則返回 7 種可能的值(fifo char dir block link file unknown)。若失敗,則返回 false。例如:
<?php echo filetype("test.txt");//輸出:file
提示:本函數的結果會被緩存。請使用 clearstatcache() 來清除緩存。
11、讀取目錄文件(opendir readir closedir)
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 指定的目錄流重置到目錄的開頭。
下面是一個完整的讀取目錄文件的示例:
<?php $dir = "/etc/php5/"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "文件名: $file : 文件類型: " . filetype($dir . $file) . "\n"; } closedir($dh); } }
12、重命名文件或目錄(rename)
bool rename ( oldname, newname, context )
<?php //將當前目錄下的子目錄a下面的文件1.gif重命名為2.gif rename('/a/1.gif', '/a/2.gif');
說明:對目錄也一樣。系統會返回操作結果,成功則返回 TRUE,失敗則返回 FALSE。
如果要移動文件或目錄,只要將重命名後的路徑設置為新的路徑就可以了,例如:
<?php //將當前目錄下的子目錄a下面的文件1.gif,移動到當前目錄下的子目錄b,並且重命名為2.gif rename('/a/1.gif', '/b/2.gif'); //注意:如果目錄b不存在,就會移動失敗
13、復制(拷貝)文件(copy)
bool copy ( source, destination )
<?php //將當前目錄下的子目錄a下面的文件1.gif,復制到當前目錄下的子目錄b,並命名為2.gif copy('/a/1.gif', '/b/1.gif');
說明:不能對目錄進行此項操作;如果目標文件(上面的/b/1.gif)已經存在,原來的文件將被覆蓋;如果要移動文件的話,請使用 rename() 函數。
14、獲取目錄的可用空間(disk_free_space)
disk_free_space ( directory )
<?php echo disk_free_space("C:");//輸出:209693288558
15、判斷指定的文件是否可寫(is_writable 或 is_writeable)
bool is_writable ( file )
說明:如果文件存在並且可寫則返回 true;file 參數可以是一個允許進行是否可寫檢查的目錄名;本函數的結果會被緩存。請使用 clearstatcache() 來清除緩存。例如:
<?php $file = "test.txt"; //或者:$file = 'd:\wwwroot\phpernote\'; echo is_writable($file)?'可寫':'不可寫';
16、以讀寫(w+)模式建立一個具有唯一文件名的臨時文件(tmpfile)
resource tmpfile()
<?php $temp = tmpfile(); fwrite($temp, "Testing, www.phpernote.com"); //倒回文件的開頭 rewind($temp); //從文件中讀取 1k echo fread($temp,1024); //刪除文件 fclose($temp); //文件會在關閉後(用 fclose())自動被刪除,或當腳本結束後 //輸出:Testing, www.phpernote.com
17、改變文件權限模式(chmod)
bool chmod ( file [,mode] )
mode 可選。規定新的權限。該參數由 4 個數字組成:
第一個數字永遠是 0
第二個數字規定所有者的權限
第二個數字規定所有者所屬的用戶組的權限
第四個數字規定其他所有人的權限
可能的值(如需設置多個權限,請對下面的數字進行總計):
1 - 執行權限
2 - 寫權限
4 - 讀權限
<?php // 所有者可讀寫,其他人沒有任何權限 chmod("test.txt",0600); // 所有者可讀寫,其他人可讀 chmod("test.txt",0644); // 所有者有所有權限,其他所有人可讀和執行 chmod("test.txt",0755); // 所有者有所有權限,所有者所在的組可讀 chmod("test.txt",0740);
18、擴展函數,方法
php讀取目錄並列表顯示目錄中的文件的函數
PHP刪除目錄及目錄下所有文件
更多文件,文件夾(目錄)函數請參考:
PHP Filesystem 函數