是否有一个有效的单行程序来获取目录中的第一个文件?

时间:2013-10-04 20:41:47

标签: php file directory

我想抓取目录中的第一个文件,而不触及/抓取所有其他文件。文件名未知。

使用glob

可能是一个非常简短的方法
$file = array_slice(glob('/directory/*.jpg'), 0, 1);

但如果该目录中有很多文件,则会有一些开销。

其他方式是这个问题的答案 - 但所有方法都涉及一个循环,并且比glob例子更长:

PHP: How can I grab a single file from a directory without scanning entire directory?

是否有一种非常简短有效的方法来解决这个问题?

3 个答案:

答案 0 :(得分:4)

可能效率不高,但如果您只想要出现的第一个jpg,那么

$dh = opendir('directory/');
while($filename = readdir($dh)) {
   if (substr($filename, -4) == '.jpg')) {
       break;
   }
}

答案 1 :(得分:2)

嗯,这不是一个单行,但我认为这是一种方式:

$result = null;
foreach(new FilesystemIterator('directory/') as $file)
{
    if($file->isFile() && $file->getExtension() == 'jpg') {
        $result = $file->getPathname();
        break;
    }        
}

但为什么不将它包装在函数中并像get_first_file('directory/')一样使用它?这将是一个很好的短暂的!

答案 2 :(得分:0)

此函数将获取任何类型的第一个文件名。

function get_first_filename ($dir) {
  $d = dir($dir);
  while ($f = $d->read()){
    if (is_file($dir . '/' . $f)) { 
      $d->close();
      return $f;
    }
  }
}