如何判断文件是在过去一周以及过去一个月中使用的?

时间:2013-06-02 14:09:28

标签: c# windows

我使用以下代码从目录中获取最新的修改文件:

String tmpPath="C:\demotestDirectory";
FileInfo newestFile = GetNewestFile(new DirectoryInfo(tmpPath));
if (newestFile != null)
{
   DateTime lastmodifiedDate = newestFile.LastAccessTime;
   string currentMonth = DateTime.Now.Month.ToString();
}

我从目录中获得了最新的修改过的文件,现在我想知道该文件是否在过去一周以及过去一个月内被使用过。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:0)

使用此功能查找7天前:

DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0));

请注意,您上次修改。你最后一次访问。对于上次修改时间,请使用:LastWriteTime

或者:根据您的意见,例如:

DateTime.Now.Subtract(new TimeSpan((int)DateTime.Now.DayOfWeek, 0, 0, 0));

答案 1 :(得分:0)

FileInfo fi = new FileInfo(/*filename*/);
DateTime dateFile = fi.LastWriteTime;
DateTime now = DateTime.Now;

if (now.Year == dateFile.Year) { //same year?
   if (now.Month == dateFile.Month) { //same month?
       MessageBox.Show("File has been edited in this month.");
       DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
       Calendar c = dfi.Calendar;
       int fileWeek = c.GetWeekOfYear(dateFile, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
       int nowWeek = c.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
       if (fileWeek == nowWeek) { //same week?
           MessageBox.Show("File has been edited in this week.");
       }
   }

}

此代码首先检查文件是否在同一年编辑。它检查它的月份。然后它使用具有当前DateTimeInfo的日历类(这包含以下内容:一周中的多少天,即一周的第一天等)。函数GetWeekOfYear返回星期数。比较两个整数,你去了!

注意:

您使用了LastAccessTime,但是当您在文件上执行一些操作时也会更新,例如在资源管理器中单击它(如果您想知道用户是否真的打开它,那么这不是很有帮助)。请改用LastWriteTime(如果文件已更改,则会更改)。

答案 2 :(得分:0)

你可以这样做:

private void fileUsage()
 {
   String tmpPath = "C:\\demotestDirectory";
    FileInfo newestFile = GetNewestFile(new DirectoryInfo(tmpPath));
        if (newestFile != null)
        {
            DateTime currunt = DateTime.Now;
            DateTime old = newestFile.LastAccessTime;
            System.TimeSpan t = currunt.Subtract(old);
            double lastmodifiedDate = t.TotalMilliseconds;
            if (lastmodifiedDate <= 604800000)
            {
                Console.WriteLine("The File " + newestFile.Name + " has been used at " + newestFile.LastAccessTime.ToLocalTime());
            }
        }

 }
private FileInfo GetNewestFile(DirectoryInfo directoryInfo)
{
   var myFile = (from f in directoryInfo.GetFiles()
                          orderby f.LastWriteTime descending
                          select f).First();

   return new FileInfo(myFile.FullName);
}

由于该文件已在上周使用,因此也意味着它已在上个月使用过。