PHP中目錄操作函式
阿新 • • 發佈:2021-09-05
PHP中目錄操作函式
1、是否是目錄
is_dir 判斷給定檔名是否是一個目錄
$path = dirname(__FILE___);
echo is_dir($path) ? '目錄' : '非目錄';
2、獲取當前的工作目錄
getcwd()
echo getcwd(); ///mnt/hgfs/study.com/file
3、相關魔術常量
__FILE__
檔案的完整路徑和檔名。如果用在被包含檔案中,則返回被包含的檔名。
自 PHP 4.0.2 起,FILE 總是包含一個絕對路徑(如果是符號連線,則是解析後的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
<?php echo '該檔案位於 " ' . __FILE__ . ' " '; //輸出E:\wamp\www\test\index.php ?>
__DIR__
檔案所在的目錄。如果用在被包括檔案中,則返回被包括的檔案所在的目錄。
它等價於 dirname(__FILE__
)。除非是根目錄,否則目錄中名不包括末尾的斜槓。
<?php
echo '該檔案位於 " ' . __DIR__ . ' " ';
//輸出E:\wamp\www\test
?>
4、磁碟空間
只對磁碟根目錄起作用
- 當前磁碟的總空間 disk_total_space(
$directory
) - 當前磁碟的剩餘空間 disk_free_space(
$directory
)
5、建立目錄
mkdir()
6、刪除空目錄
rmdir()
7、讀目錄控制代碼
$rHandle = opendir($path);
$filename = readdir($rHandle)
8、重置指標
$rHandle = opendir($path); $filename = readdir($rHandle); var_dump($filename); $filename = readdir($rHandle); var_dump($filename); $filename = readdir($rHandle); var_dump($filename); rewinddir($rHandle); //指標初始化 $filename = readdir($rHandle); var_dump($filename);
9、複製目錄
copy
剪下目錄
copy + rmdir
10、重新命名目錄
rename rmdir
11、關閉目錄控制代碼
closedir
12、chdir() 函式改變當前的目錄
13、basename()返回路徑中的檔名
14、diename()返回路徑中目錄部分
遞迴刪除目錄下的檔案
<?php
// $dir:要刪除的檔案的目錄
function recursiveDelete($dir)
{
// 開啟指定目錄
if ($handle = @opendir($dir))
{
while (($file = readdir($handle)) !== false)
{
if (($file == ".") || ($file == ".."))
{
continue;
}
if (is_dir($dir . '/' . $file))
{
// 遞迴
recursiveDelete($dir . '/' . $file);
}
else
{
unlink($dir . '/' . $file); // 刪除檔案
}
}
@closedir($handle);
rmdir ($dir);
}
}
遍歷資料夾下所有檔案
<?php
function read_all ($dir){
if(!is_dir($dir)) return false;
$handle = opendir($dir);
if($handle){
while(($fl = readdir($handle)) !== false){
$temp = iconv('GBK','utf-8',$dir.DIRECTORY_SEPARATOR.$fl);//轉換成utf-8格式
//如果不加 $fl!='.' && $fl != '..' 則會造成把$dir的父級目錄也讀取出來
if(is_dir($temp) && $fl!='.' && $fl != '..'){
echo '目錄:'.$temp.'<br>';
read_all($temp);
}else{
if($fl!='.' && $fl != '..'){
echo '檔案:'.$temp.'<br>';
}
}
}
}
}
read_all('D:\wamp\www\test');
//另一種方法
tree("alipay");
function tree($directory)
{
$mydir = dir($directory);
echo "<ul>";
while ($file = $mydir->read()) {
if($file != "."&&$file != ".."){
if (is_dir("$directory/$file")) {
echo "<li style='color:blue'>$file</li>";
tree("$directory/$file");
} else{
echo "<li>$file</li>";
}
} } echo "</ul>";
$mydir->close();
}
?>
獲得資料夾大小並格式化
$dir='CMS';
echo getRealSize(getDirSize($dir));
// 獲取資料夾大小
function getDirSize($dir)
{
$sizeResult=0;
$handle = opendir($dir);
while (false!==($FolderOrFile = readdir($handle)))
{ if($FolderOrFile != "." && $FolderOrFile != "..")
{ if(is_dir("$dir/$FolderOrFile"))
{ $sizeResult += getDirSize("$dir/$FolderOrFile");
}
else
{
$sizeResult += filesize("$dir/$FolderOrFile");
}
} } closedir($handle);
return $sizeResult;
}
// 單位自動轉換函式
function getRealSize($size)
{
$kb = 1024; // Kilobyte
$mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte
$tb = 1024 * $gb; // Terabyte
if($size < $kb)
{ return $size." B";
}
else if($size < $mb)
{ return round($size/$kb,2)." KB";
}
else if($size < $gb)
{ return round($size/$mb,2)." MB";
}
else if($size < $tb)
{ return round($size/$gb,2)." GB";
}
else
{
return round($size/$tb,2)." TB";
}
}
function getFolderSize($dir)
{
$count_size = 0;
$dir_array = scandir($dir);
foreach ($dir_array as $filename) {
if ($filename != "." && $filename != "..") {
if (is_dir($dir . "/" . $filename)) {
$count_size+= getFolderSize($dir . "/" . $filename);
} else{
$count_size = $count_size + filesize($dir . "/" . $filename);
}
} } return $count_size;
}
來自為知筆記(Wiz)