簡體   English   中英

列出所有目錄(在硬盤上)及其文件夾和文件

[英]Listing all directories (on hard-disk) and its folders and files

有沒有辦法可以在PC上讀取整個文件系統? 我試圖列出W:目錄中的所有文件,但是代碼不起作用。

<?php
 $fso = new COM('Scripting.FileSystemObject'); 
    $D = $fso->Drives; 
    $type = array("Unknown","Removable","Fixed","Network","CD-ROM","RAM Disk"); 
    foreach($D as $d ){ 
       $dO = $fso->GetDrive($d); 
       $s = ""; 
       if($dO->DriveType == 3){ 
           $n = $dO->Sharename; 
       }else if($dO->IsReady){ 
           $n = $dO->VolumeName; 
           $s = file_size($dO->FreeSpace) . " free of: " . file_size($dO->TotalSize); 
       }else{ 
           $n = "[Drive not ready]"; 
       } 
   echo "Drive " . $dO->DriveLetter . ": - " . $type[$dO->DriveType] . " - " . $n . " - " . $s . "<br>"; 
   $dir = $dO->DriveLetter;

   if (is_dir($dir.':\\')){ // NEVER ENTERS THE IF BLOCK
    if ($dh = opendir($dir)){
      while (($file = readdir($dh)) !== false){
        echo "filename:" . $file . "<br>";
      }
      closedir($dh);
    }
  }

    } 

      function file_size($size) 
      { 
      $filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); 
      return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0 Bytes'; 
      } 


?> 

在上面的代碼中, is_dir調用始終失敗。 這可能是什么原因? 讀取Windows文件系統的正確方法是什么?

試試這個http://php.net/manual/en/class.recursivedirectoryiterator.php

<?php

$path = realpath('/etc');

$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
    echo "$name\n";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM