【问题标题】:Delete file if it was created last month删除上个月创建的文件
【发布时间】:2015-02-08 15:35:58
【问题描述】:

我有一个程序可以为当月的每一天写日记,我遇到的问题是当我开始新的一个月时,上个月的所有约会仍然存在,因为它们保存在一个 txt 文件中,就像这样

3,8.30am,牙医,描述

上面的第一个字段是天,你可以看到月份不存在。 下面的代码是我试过的,它编译没有错误。

我的问题是这行得通吗? 我不知道如何检查它,因为我现在创建的任何文件都将是一个新文件,我没有任何旧文件??

我想要的是,当程序加载时,如果这个月是例如二月并且文件是在一月创建的,删除该文件并创建一个新的空文件

  bool checkFileExists(string file)
  {
     if (!System.IO.File.Exists(file))
     {

        using (FileStream fs = File.Create(file))
        {
           // File created.
           return true;
        }
     }

     else
     {
           FileInfo fi = new FileInfo(file);
           if (fi.CreationTime < DateTime.Now.AddMonths(-1))
              fi.Delete();
     }
           // File exists.
           return true;
  }

【问题讨论】:

  • 要验证代码是否正常工作,您可以随时更改测试文件的创建时间:stackoverflow.com/questions/9589677/…
  • 尝试将if 语句从if (fi.CreationTime &lt; DateTime.Now.AddMonths(-1)) 更改为if (fi.CreationTime.Month &lt; DateTime.Now.Month)
  • 这很酷,我不知道这是可能的,谢谢
  • 这闻起来像是糟糕的设计。您可以将文件格式更改为包含年和月吗?
  • 如果只是,不,我不能改变它,它必须是那个确切的格式。

标签: c# fileinfo


【解决方案1】:

尝试使用File.GetCreationTime

因此,从上面获取您的代码将变为:

bool checkFileExists(string file)
{
 if (!System.IO.File.Exists(file))
 {
    using (FileStream fs = File.Create(file))
    {
       // File created.
       return true;
    }
 }
 else
 {
       if (File.GetCreationTime(file) < DateTime.Now.AddMonths(-1))
          File.Delete(file);
 }
 // File exists.
 return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2016-05-31
    • 2012-01-29
    • 2018-01-31
    • 2021-02-25
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多