2012-07-22 10 views
18

Quindi ho questa app che elabora i file CSV. Ho una riga di codice per caricare il file.Come ottenere il file più nuovo in una directory in php

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

Mi piacerebbe trovare un modo in cui ho potuto guardare nella directory data e ottenere il file più recente (tutti hanno data i tag in modo che sarebbe in ordine all'interno di data) e impostare il nome uguale a $myFile.

Non riuscivo davvero a trovare e capire la documentazione delle directory php quindi qualsiasi risorsa utile sarebbe apprezzata. Grazie.

risposta

30

Ecco un tentativo utilizzando scandir, assumendo gli unici file nella directory sono i file con data e ora desiderati:

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

vengono elencate tutti i file nella directory in ordine decrescente, quindi, quale uno è il primo in quell'elenco ha il "nome di file" più grande - e quindi il più grande valore di timestamp - ed è quindi il più nuovo.

Nota che scandir è stato aggiunto in PHP 5, ma its documentation page mostra come implementare questo comportamento in PHP 4.

+0

Questo sembra buono. Lo proverò. – Mike

+1

@Mike: Cool :) Sono lontano dalla mia casella abilitata per PHP in questo momento, quindi questo esempio, pur essendo solo due righe, non è testato, quindi fammi sapere se non fa quello che deve. – Matchu

+1

Ha funzionato alla grande, grazie! Penso di aver bisogno di aggiungere un '/' a 'dati' per farlo funzionare. – Mike

Problemi correlati