2015-12-14 62 views
-2

所以我有我的本地筆記本電腦上的目錄。我的程序在哪裏存儲xml文檔。但我希望程序能夠找到最舊的,並刪除目錄中有更多的100個文件。

這是我檢查目錄中xml文檔數量的方式。有沒有辦法刪除目錄中最舊的文件?使用c#

private int CheckAmountOfFiles() 
    { 
     var fileCount = (from file in Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "*.xml", SearchOption.TopDirectoryOnly) select file).Count(); 
     return fileCount; 
    } 

我不知道這可能嗎?希望你們中的一個能幫我一把。

+3

看看,爲了獲得所需的時間FileInfo類訪問FileInfo.LastWriteTime來確定哪個文件是最舊的。 –

+1

我們不會爲您編寫代碼。您需要向我們展示您的研究和您當前正在使用的代碼以刪除最舊的項目。 –

+1

請注意,有*兩個*日期:*創建*和*最後更新*一個 –

回答

0

事情是這樣的:

var last = Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)) 
    .Select(fileName => new FileInfo(fileName)) 
    .OrderByDescending(fileInfo => fileInfo.LastWriteTime) // or "CreationTime" 
    .Skip(100) // Skip 100 newest files 
    .Select(fileInfo => fileInfo.FullName); 

...

foreach (var fileName in last) 
    File.Delete(fileName); 

注意,你必須使用FileInfo

3

首先按創建日期排序檢索列表,跳過前100個元素,並將所有剩餘元素放入列表中。然後刪除該列表中的所有文件。

var oldFiles = Directory.EnumerateFiles(/*...*/) 
         .Select(i => new FileInfo(i)) 
         .OrderByDescending(i => i.DateCreated) 
         .Skip(100); 

foreach(var file in oldFiles) 
{ 
    file.Delete(); 
} 
+0

/我丟棄了我的文章,一半通過它。 :〜(不能輸入的速度不夠快...... –

+0

很可能,'拿(100)',而不是'Skip(100)' –

+0

@DmitryBychenko你的答案去了哪裏?它的工作。 –

相關問題