2009-07-13 9 views

risposta

10

Usa:

System.IO.File.GetCreationTime(filename); 

Per ottenere l'ora di creazione del file, vedere GetCreationTime per più dettagli ed esempi.

Poi si può fare qualcosa di simile:

public bool IsBelowThreshold(string filename, int hours) 
{ 
    var threshold = DateTime.Now.AddHours(-hours); 
    return System.IO.File.GetCreationTime(filename) <= threshold; 
} 
+0

Il confronto non dovrebbe avere .AddHours() - questo restituirà true per tutti i file non creati in futuro. – iisystems

11

qualcosa di simile ...

 FileInfo fileInfo = new FileInfo(@"C:\MyFile.txt")); 
     bool myCheck = fileinfo.CreationTime > DateTime.Now.AddHours(-23); 
+2

Si combinano le ultime 2 righe in qualcosa di simile

 bool myCheck = fileinfo.CreationTime > DateTime.Now.AddHours(-23); 

+0

Grazie, a cura, mi piace molto meglio. –

2

Usa FileInfo di classe e la proprietà CreationTime.

FileInfo fi = new FileInfo(@"C:\myfile.txt"); 
bool check = (DateTime.Now - fi.CreationTime).TotalHours < 23; 
5

È possibile utilizzare File.GetCreationTime e confrontare al tempo corrente:

private static bool IsFileOlder(string fileName, TimeSpan thresholdAge) 
{ 
    return (DateTime.Now - File.GetCreationTime(fileName)) > thresholdAge; 
} 

// used like so: 
// check if file is older than 23 hours 
bool oldEnough = IsFileOlder(@"C:\path\file.ext", new TimeSpan(0, 23, 0, 0)); 
// check if file is older than 23 milliseconds 
bool oldEnough = IsFileOlder(@"C:\path\file.ext", new TimeSpan(0, 0, 0, 0, 23)); 
+0

Mi piace il fatto che questo eviti potenzialmente la creazione di un intero oggetto FileInfo solo per leggere una singola proprietà. –

1
FileInfo fi = new FileInfo("c:\\file.txt"); 
    if (fi.CreationTime.AddHours(23) >= DateTime.Now) 
    { 
     //created within the last 23 hours 
    } 
Problemi correlati