2010-10-18 13 views

回答

1

這抓住了所有比最新的20年長的文件並刪除它們:

int numberOfFilesToKeep = 20; 
string logFilePath = @"c:\temp"; 
FileInfo[] logFiles = (new DirectoryInfo(logFilePath)).GetFiles(); 
var oldFiles = logFiles.OrderByDescending(t => t.CreationTime).Skip(numberOfFilesToKeep); 
foreach (var file in oldFiles) 
    file.Delete(); //you'll want a try/catch here 

注意,你可能需要使用LastWriteTime而非CreationTime以上,根據關於如何使用日誌文件。

4

試試這個:

List<FileInfo> fi = new List<FileInfo>(); 
//load fi 
List<FileInfo> SortedFi = fi.OrderBy(t=>t.CreationTime); 
0
using System.Linq; 
using System.IO; 

DirectoryInfo di = new DirectoryInfo("mylogdir"); 
FileSystemInfo[] files = di.GetFileSystemInfos(); 
var orderedFiles = files.OrderBy(f => f.CreationTime); 

緩存orderedFiles,並刷新在需要時您滾動到下一個。

1

事情是這樣的:

static void Main(string[] args) 
{ 
    var files = new List<string>(); 

    foreach (var file in Directory.GetFiles("<path to your log files>")) 
    { 
     files.Add(file); 
    } 

    files.Sort(
     new Comparison<string>(
      (a, b) => new FileInfo(b).CreationTime.CompareTo(new FileInfo(a).CreationTime) 
     ) 
    ); 

    foreach (var file in files.Skip(20)) 
    { 
     // Delete file. 
    } 
} 
相關問題