我写了一个小代码,如果一个zip文件超过5小时(300薄荷),则检查时间例程,然后必须删除该文件。 我有这个代码。但它没有删除任何文件。
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 :(得分:8)
你想要TimeSpan.TotalMinutes
。 Minutes
属性仅返回时间跨度的分钟部分(0-59)。
答案 1 :(得分: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来编译这段代码。
答案 2 :(得分: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获取时间跨度的整数和小数分钟的值