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