仅检索前一天的文件
本文关键字:文件 前一天 检索 | 更新日期: 2023-09-27 18:33:43
我目前正在开发一个工具,该工具将查找前一天的所有文件,并将它们从同一服务器上的一个文件夹移动到另一个文件夹。我没有遇到权限问题,但我被困在 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) 仅当您尝试调用静态 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));
}
}