我碰到了一堵磚牆!我的目標是僅在給定日期在兩個文件夾之間複製文件,忽略具有較早的LastWriteTime的同一文件夾中的文件。我的邏輯似乎工作,但是當我運行代碼時發現它找不到我的測試文件,但我收到一個異常,即使它不能告訴我測試文件的名稱,如果它不工作的話! :(我已經發布我下面的代碼,請大家幫忙!通過LastWriteTime複製文件
namespace RunAfterFirstScan
{
class Program
{
public static IEnumerable<string> GetNewest(string path)
{
DateTime to_date = DateTime.Today.AddDays(-5);
var directoryInfo = new DirectoryInfo(path);
if (!directoryInfo.Exists) return Enumerable.Empty<string>();
var query =
from file in directoryInfo.GetFiles()
where file.LastWriteTime.Date == to_date.Date
select file.Name;
return query;
}
static void Main(string[] args)
{
string sourcePath = @"C:\Users\berryn01\Desktop\From\";
string targetPath = @"C:\Users\berryn01\Desktop\To\";
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
if (System.IO.Directory.Exists(sourcePath))
{
string[] files = GetNewest(sourcePath).ToArray();
foreach (string s in files)
{
string fileName = System.IO.Path.GetFileName(s);
string destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(s, destFile);
}
}
else
{
Console.WriteLine("Source path does not exist!");
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
哪部分不工作有沒有異常或錯誤?詳細說明您的問題 –
如果您的文件是在今天創建的,它將永遠不會發現,因爲你在GetNewest方法中減去5天。此外,我認爲比較'file.LastWriteTime.Date == to_date.Date'是一個錯誤,應該是'file.LastWriteTime.Date> = to_date.Date' –
對不起,詳細說明,有一個例外:未處理mscorlib.dll 中發生類型'System.IO.FileNotFoundException'的異常其他信息:找不到文件'Opinion Set Routine.docx'。我沒有那麼擔心日期,因爲我只是使用減法來測試前面創建的文件夾中的文件。但是,每次我更改此值時,都會在該給定日期找到正確的文件,然後引發異常,表示無法找到它。 –