【问题标题】:How to find out oldest file from a directory??? (PHP)如何从目录中找出最旧的文件??? (PHP)
【发布时间】:2012-04-23 17:12:53
【问题描述】:

我有一个名为“备份”的目录

它包含以下文件(带有一些具体细节)

No---File Name----------------------------------------------------------------Date--------------------Time-----------Size

1.  blog-backup_on_11-April-2012_at_08-22-18AM.zip  11-April-2012   08:22:18AM  5.28MB
2.  blog-backup_on_11-April-2012_at_08-25-24AM.zip  11-April-2012   08:25:25AM  5.28MB
3.  blog-backup_on_11-April-2012_at_08-25-46AM.zip  11-April-2012   08:25:47AM  5.28MB
4.  blog-backup_on_11-April-2012_at_08-26-07AM.zip  11-April-2012   08:26:08AM  5.28MB
5.  blog-backup_on_11-April-2012_at_08-27-52AM.zip  11-April-2012   08:27:53AM  5.28MB

我想从“备份”目录中获取最旧的文件
就像“blog-backup_on_11-April-2012_at_08-22-18AM.zip”一样,它是目录中最旧的文件。

我尝试了this link,但无法处理逻辑。

请给点建议,如何获取这个文件?

【问题讨论】:

标签: php filemtime


【解决方案1】:

除非有人能做出某种清晰的单线,我还没有在这里看到。我更喜欢可读且易于理解的算法,这些算法不依赖于您记住各种排序函数的作用。

$latest_file_time = 0;
foreach(glob("backup/*") as $this_filename){
        $file_changed_time = filemtime($this_filename);
        if($file_changed_time > $latest_file_time){
                $latest_file = $this_filename;
                $latest_file_time = $file_changed_time;
        }
}

echo "latest file time = $latest_file_time latest file name = $latest_file";

【讨论】:

    【解决方案2】:
    $dir = 'path/to/backup/';
    
    foreach (glob($dir.'*.zip') as $filename) {
      $time = filemtime($filename);
      $files[$time] = $filename;
    }
    krsort($files);
    
    echo reset($files);
    

    【讨论】:

    • glob() 返回包含$dir的完整路径,所以我认为应该是filemtime($filename);没有$dir,对吧?
    【解决方案3】:

    我不确定为什么前面的答案提到了krsort();,因为它实际上使第一个元素成为 newest 文件。使用

        ksort($file_arr);
        echo reset($file_arr);
    

    将回显最旧的文件。前面已经提到的开始代码不需要更改。

    【讨论】:

      【解决方案4】:

      试试这个:

          $dir_path = 'c:/my_dir';
          if($handle = opendir($dir_path))
          {
      
              while(false !== ($entry = readdir($handle)))
              {
                  $created = filemtime($dir_path . $entry);
                  $myfiles[$created] = $entry;
              }
      
      
      
              krsort($myfiles); //first element is oldest file
      
              print_r($myfiles);
          }
      

      【讨论】:

        猜你喜欢
        • 2021-06-24
        • 2010-10-24
        • 2012-10-06
        • 2012-06-12
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2021-01-23
        • 2012-03-11
        相关资源
        最近更新 更多