2011-04-27 73 views
2

我寫了一個小代碼,它檢查時間例程,如果一個zip文件大於5小時(300 mint),那麼文件必須被刪除。 我有這段代碼。但它不會刪除任何文件。Timespan問題

string[] zipfiles = Directory.GetFiles("D:\\images\\zipFiles\\", "*.zip*"); 

foreach (string zip in zipfiles) 
{ 
    FileInfo zipinfo = new FileInfo(zip); 
    string t = zipinfo.CreationTime.ToString(); 
    TimeSpan span = DateTime.Now - zipinfo.CreationTime; 
    int k =0; 
    k = span.Minutes; 
    if (k > 300) 
    { 
     zipinfo.Delete(); 
    } 
    else 
    { 

    } 
} 
+0

該目錄中是否有文件?他們比5個小時大嗎?它是否會拋出異常?這些文件是否在使用? – Bobby 2011-04-27 09:02:58

+0

@Bobby是文件大於5小時,它不會拋出任何異常? – safi 2011-04-27 09:05:39

回答

8

你想要TimeSpan.TotalMinutesMinutes屬性只返回時間範圍的分鐘部分(0-59)。

+0

@Talljoe,那麼我需要做什麼,因爲我需要刪除文件,只有當他們是5小時,即三百分鐘。 – safi 2011-04-27 09:06:09

+0

如果你有'span.Minutes',你需要放置'span.TotalMinutes'。 – Talljoe 2011-04-27 09:06:54

+0

是的,我把'總mintues'並且還宣佈'K爲雙',但它仍然不工作? – safi 2011-04-27 09:10:56

0
string[] zipfiles = Directory.GetFiles("C:\\Delete\\New Folder\\", "*.cs*"); 

     foreach (string zip in zipfiles) 
     { 

      FileInfo zipinfo = new FileInfo(zip); 
      string t = zipinfo.CreationTime.ToString(); 
      TimeSpan span = DateTime.Now - zipinfo.CreationTime; 
      double k = 0; 
      k = span.TotalMinutes; 
      if (k > 10) 
      { 

       zipinfo.Delete(); 
      } 
      else 
      { 

      } 
     } 

TotalMinutes獲得了整個價值和時間跨度

+0

請不要複製和粘貼整個代碼塊,沒有任何提示修復,這是不好的做法。解釋錯誤是什麼,解決方法是什麼,並舉例說明如何解決它。我們在這裏幫助尋找解決方案並幫助學習,我們不是在這裏做所有的工作。 – Bobby 2011-04-27 09:08:41

+1

會這麼做鮑比。謝謝你的信息 – 2011-04-27 09:10:38

+0

@Kishore Borra我有相同的一段代碼,但它不工作,我有文件超過5小時old.but它不是刪除它們。 – safi 2011-04-27 09:13:47

3

有關使用的TotalMinutes代替Minutes其他的答案是點上的分數分鐘,但因爲你還詢問了整體邏輯和代碼,我想我可能會建議一種替代方案:

var dir = new DirectoryInfo("D:\\images\\zipFiles\\"); 
var now = DateTime.Now; 
var oldFiles = dir.GetFiles("*.zip") 
        .Where(f => (now - f.CreationTime).TotalMinutes > 300); 
foreach (var file in oldFiles) 
    file.Delete(); 

這不完全一樣的事情爲你的代碼,但在一個更簡明,(在我看來)可讀的方式。因爲它使用LINQ,所以至少需要.NET 3.5來編譯這些代碼。

+0

謝謝,我喜歡這個邏輯 – safi 2011-04-28 07:44:46