簡體   English   中英

php scandir()沒有顯示文件 - 只顯示目錄

[英]php scandir() not showing files - only showing directories

我有一個目錄結構如下:

/文件
/文件/ 001
/files/001/addfile.php
/文件/ 002
/files/002/deletefile.php
/文件/ 003
/files/003/viewfile.php

我的劇本:

error_reporting(E_ALL);
$directory      = 'files';
$files      = scandir($directory);

$xml = new DOMDocument('1.0', 'UTF-8');
$xmlFiles = $xml->appendChild($xml->createElement('FILES'));
if(is_dir($directory)) {
    print_r($files);
}
/*foreach($files as $file => $key) {
    if($file == '.' || $file == '..') { continue; }
    echo '$file: '.$file;
    if(is_dir("$directory/$file")) {
        $xmlDir->appendChild($xml->createElement($file));
    }
    else {
        $xmlFiles->appendChild($xml->createElement('FILE', $file));
    }
}*/
echo $xml->saveXML();

我的問題: print_r($files)輸出:

數組([0] =>。[1] => .. [2] => 001 [3] => 002 [4] => 003)

為什么scandir只輸出目錄而不是文件?

TIA,Nate

你的文件在這些目錄中,而scandir只顯示指定路徑的內容,但沒有任何重復,所以一切都是正確的。

Scandir不能遞歸工作。 它只掃描輸入到它的路徑。

Scandir Recurrsive功能可以更深入地掃描文件系統

您可以將RecursiveIteratorIterator用於帶有子目錄列表的get目錄

以下是使用迭代器清空目錄的方法:

<?php
function empty_dir($dir) {
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir),
                                             RecursiveIteratorIterator::CHILD_FIRST);
   foreach ($iterator as $path) {
     if ($path->isDir()) {
        // do something with directory
        //    rmdir($dir);
     } else {
       //doo something with files 
       // unlink($path->__toString());
     }
   }
  //    rmdir($dir);
}
?>

暫無
暫無

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

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