仅检索前一天的文件

时间:2013-10-03 17:20:42

标签: c# file-io

我目前正在开发一种工具,可以查找前一天的所有文件,并将它们从一个文件夹移动到同一服务器上的另一个文件夹。我没有遇到许可问题,但我对IF声明感到困惑。应用程序找到文件后,移至另一个文件夹进行进一步处理。我的问题是我无法找到只有昨天日期的所有文件并移动它们。我在下面提供了我的代码,它几乎就在那里(或者至少那是我告诉自己的)。提前感谢您提供任何帮助。

        private void Form1_Load(object sender, EventArgs e)
    {
        DateTime past = DateTime.Today.AddDays(-1);
        txtSourceFolderCount.Text = past.ToShortDateString();

        //efile originally start here
        var sourceDir = @"\\DIS2\EFilingXML\Archive";

        //application moves to archive
        var destDir = @"\\DIS2\EFilingXML";

        //only XML files are accepted
        //var pattern = "*.xml";

      DirectoryInfo source = new DirectoryInfo(sourceDir);

      // Get info of each file into the directory
            foreach (FileInfo fi in source.GetFiles())
            {
                var creationTime = fi.LastWriteTime;

               if (creationTime == past && creationTime < DateTime.Today)
                {
                    fi.MoveTo(Path.Combine(destDir, fi.ToString()));
                }
            }
    }

1 个答案:

答案 0 :(得分:2)

  

我的问题是我无法找到只有日期的所有文件   昨天又搬了他们。

两个问题:

1)当您尝试调用静态System.IO.File.GetCreationTime方法时,您只使用File.Name。除了短的File.Name之外,这个静态方法没有上下文,其值类似于“MyFile.xml”,并且没有附加路径。

2)除非你在if语句中添加第二个限定符,否则你将从今天开始拾取文件:

        //gets all files in source directory & moves to destination directory(archive)
        foreach (var file in new DirectoryInfo(sourceDir).GetFiles(pattern))
        {
            DateTime dt = File.GetCreationTime(file.FullName);

            if (dt >= DateTime.Today.AddDays(-1) && dt < DateTime.Today)
            {
                file.MoveTo(Path.Combine(destDir, file.Name));
            }
        }