0

我目前正在开发一种工具,它将查找前一天的所有文件,并将它们从一个文件夹移动到同一服务器上的另一个文件夹。我没有遇到许可问题,但我卡在 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()));
                }
            }
    }
4

1 回答 1

2

我的问题是我无法找到仅包含昨天日期的所有文件并移动它们。

两个问题:

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

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));
            }
        }
于 2013-10-03T17:32:25.837 回答