2012-06-12 3 views
0

Я знаю, как читать файлы на PHP, но я хочу прочитать последний файл, который был создан в определенной папке.чтение последнего созданного файла php

У меня есть кнопка HTML, указывающий на read.php

read.php читает папку, c:\file\ и читает последний файл, который создается в этой папке.

я не мог найти много информации о том, как это сделать

Может кто-нибудь помочь мне сделать это.

+0

Может ли вы показать код для read.php? – Marvo

+0

См. Этот вопрос [http://stackoverflow.com/questions/2084986/file-creation-time](http://stackoverflow.com/questions/2084986/file-creation-time) – sachleen

ответ

7

Получить последнюю версию файла в C:\file:

$files = glob('c:/file/*.*'); 
$files = array_combine($files, array_map('filectime', $files)); 
arsort($files); 
echo key($files); // the filename 
+0

О, чудеса PHP. Мое обнаружение outlier было написано с влиянием Java, и Java не хватает этих ярлыков. Реквизит; ваш ответ намного чище, чем мой. Upvoted. – Vulcan

+0

Спасибо за ответ – Ank

+0

Спасибо, что работает как шарм. –

0

Истерируйте через каталог, отслеживая последний созданный файл, возвращая последний раз, когда каждый из них был повторен и проверен.

$dir = "C:\file\"; 
if ($handle = opendir($dir)) { 
    $latest = null; 
    while (($cur = readdir($handle) !== false) { 
     if ($latest == null || filectime($cur) > filectime($latest)) { 
      $latest = $cur; 
     } 
    } 
    closedir($handle); 
} 
return $latest; 

Примечание: операционные системы Unix Большинство не отслеживать даты создания файла, так что ближайший вы можете получить дату последнего изменения (через filemtime или filectime). Однако в Windows filectime возвращает дату создания, а filemtime возвращает дату последнего изменения.

+0

Это возвращает последний измененный файл. Вы хотите использовать 'filectime' – sachleen

+0

О, вы правы, мне плохо. Также добавив примечание, что многие операционные системы Unix не отслеживают время создания, поэтому filectime имеет тот же результат, что и filemtime в Unix. – Vulcan

0

Это будет перебирать каждый файл в каталоге и определить, какой файл имеет новейшее «создано время»:

function find_latest() 
{ 
    $l = 0; 
    $r = ''; 
    foreach(new DirectoryIterator('C:\\file') as $file) 
    { 
     $ctime = $file->getCTime(); // Time file was created 
     $fname = $file->getFileName(); // File name 
     if($ctime > $l) 
     { 
      $l = $ctime; 
      $r = $fname; 
     } 
    } 
    return $r; 
} 
Смежные вопросы