如何在php中获取目录中的最新文件

2022-08-30 11:30:46

所以我有这个处理CSV文件的应用程序。我有一行代码来加载文件。

$myFile = "data/FrontlineSMS_Message_Export_20120721.csv";  //The name of the CSV file
$fh = fopen($myFile, 'r');                             //Open the file

我想找到一种方法,我可以在目录中查找并获取最新的文件(它们都有日期标签,因此它们将按内部顺序排列),并将名称设置为等于。datadata$myFile

我真的找不到并理解php目录的文档,所以任何有用的资源也将不胜感激。谢谢。


答案 1

下面尝试使用 scandir假设目录中唯一的文件具有带时间戳的文件名

$files = scandir('data', SCANDIR_SORT_DESCENDING);
$newest_file = $files[0];

我们首先以降序列出目录中的所有文件,然后,无论哪个文件在该列表中排在第一位,则具有“最大”文件名 - 因此是最大的时间戳值 - 因此是最新的。

请注意,这是在 PHP 5 中添加的,但其文档页面显示了如何在 PHP 4 中实现该行为。scandir


答案 2

对于使用通配符的搜索,您可以使用:

<?php
$path = "/var/www/html/*";

$latest_ctime = 0;
$latest_filename = '';

$files = glob($path);
foreach($files as $file)
{
        if (is_file($file) && filectime($file) > $latest_ctime)
        {
                $latest_ctime = filectime($file);
                $latest_filename = $file;
        }
}
return $latest_filename;
?>

推荐