简体   繁体   中英

Using DirectoryIterator to loop through a D: drive directory

I am trying to loop through this directory:

$path = "D:\\import\\statsummary\\";

Here is my code:

$path = "D:\\import\\statsummary\\";
//$path = "C:\\test";
//function load_csv($path, $filename){
    if(is_null($filename)){
        header('Content-type: text/plain');
        $output = array();
        foreach (new DirectoryIterator($path) as $file){
            if($file->isFile()){
                $output[] = $i++ . " " . $file->getFileName() . "\n";
                $output[] = file($file->getPathName());
                $output[] = "\n------------\n";
            }
        }
    }

    echo implode('', $output);

When I run this script, I get this error:

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'DirectoryIterator::__construct(D:\import\statsummary\,D:\import\statsummary\): Access is denied. (code: 5)' in C:\inetpub\wwwroot\include\file_importer.php:10
Stack trace:
#0 C:\inetpub\wwwroot\include\file_importer.php(10): DirectoryIterator->__construct('D:\import\...')
#1 {main}
  thrown in C:\inetpub\wwwroot\include\file_importer.php on line 10

But when I change it to a test directory on my C:\\ drive, it runs just fine. I've even created a username to run PHP as directed in this post:

php - Unable to connect to network share - Stack Overflow

Based on the DirectoryIterator class , something like this should work:

<?php
$path = "D:/import/statsummary";
$output=array();
$iterator = new DirectoryIterator(path);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        $filename= $fileinfo->getFilename();
        $path=$fileinfo->getPathname();
        $output[][$filename]=$path;
    }
}

print_r($output);
?>

Update

Since you're getting access denied, you'll need to run the command prompt (CMD) window as Administrator more than likely. If this is on a link (lnk) you can change the permissions in the link settings.

For instance if you right-click on the shortcut for cmd as select properties , you would go to shortcut>advanced>Run as Administrator.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM