文件夹扫描脚本,希望用文件夹<files></files>包围所有文件,而不是文件夹



我希望我的脚本在文件夹中放置所有文件,但不是在文件夹中的文件夹中,这是我拥有ATM的代码:

function listFolderFiles($dir){
$folder = scandir($dir);
echo "<folder name='".$dir."'>";
foreach($folder as $file){
    if($file != '.' && $file != '..'){
        if(is_dir($dir.'/'.$file)) {            
            listFolderFiles($dir.'/'.$file);        
        }
        else{
         echo '<file>'.$file.'</file>';
        }  
    }   
}
echo "</folder>";
}

我想要这样的输出:

<folder name='appdata'>
    <folder name='appdata/assets'>
        <files>
            <file>New Text Document - Copy (2) - Copy.txt</file>
            <file>New Text Document - Copy (2).txt</file>
            <file>New Text Document - Copy.txt</file>
            <file>New Text Document.txt</file>
        </files>
        <folder name='appdata/assets/audio'>
            <folder name='appdata/assets/audio/frl'>
                <files>
                    <file>New Microsoft Excel Worksheet - Copy (2).xlsx</file>
                    <file>New Microsoft Excel Worksheet - Copy - Copy.xlsx</file>
                    <file>New Microsoft Excel Worksheet - Copy.xlsx</file>
                    <file>New Microsoft Excel Worksheet.xlsx</file>
                </files>
            </folder>
        </folder>
    </folder>
</folder>

预先感谢

尝试以下内容。这只是一个可能的解决方案,但是您还将在开始时获取所有文件夹:

function listFolderFiles($dir){
   $folder = scandir($dir);
   echo "<folder name='".$dir."'>";
   $files = array();
   foreach($folder as $file){
       if($file != '.' && $file != '..'){
           if(is_dir($dir.'/'.$file)) {            
               listFolderFiles($dir.'/'.$file);        
           }
        else{
            $files[] = $file;
        }  
    }
    if (!empty($files)) {
       echo "<files>";
       foreach ($files as $_file) {
           echo '<file>'.$_file.'</file>';
       }
       echo "</files>";
    }   
}
   echo "</folder>";
}

相关内容

最新更新