У меня есть эта функция для проверки копии файла: это важная функция резервного копирования, поэтому я должен быть уверен, что оба файла точно такие же (еще не реализованы безопасность и атрибут).
Вот:
public class fileCheck
{
public bool sourceExist { get; set; }
public bool DestExist { get; set; }
public bool bothSizeMatch { get; set; }
public bool bothDateMatch { get; set; }
public bool bothAclMatch { get; set; }
}
public fileCheck fileAlreadyExist(string source, string dest)
{
fileCheck f = new fileCheck();
if (File.Exists(source))
{
f.sourceExist = true;
}
else
{
f.sourceExist = false;
}
if (File.Exists(dest))
{
f.DestExist = true;
}
else
{
f.DestExist = false;
}
if (f.sourceExist && f.DestExist)
{
FileInfo F1 = new FileInfo(source);
FileInfo F2 = new FileInfo(dest);
long len2 = F2.Length;
if ( F1.LastWriteTime == F2.LastWriteTime)
{
f.bothDateMatch = true;
}
else
{
f.bothDateMatch = false;
}
if (F1.Length == len2 )
{
f.bothSizeMatch = true;
}
else
{
f.bothSizeMatch = false;
}
}
else
{
f.bothDateMatch = false;
f.bothSizeMatch = false;
}
return f;
}
теперь проблема с file.LastWriteTime ! этот код будет работать, как и ожидалось, на сервере с двумя дисками ntfs на сервер. но когда я делаю резервную копию на USB-ключе, обе даты разные. почему двоичный файл файла изменился? я слышал, что толстый диск добавляет 1-2 секунды к значению lastwritetime.
и как я могу реализовать что-то безопасное для сравнения на любом диске?
я знаю, что могу сделать что-то подобное для удаления второй ошибки, но недостаточно точности
if ( F1.LastWriteTime.ToString("MM/dd/yyyy") == F2.LastWriteTime.ToString("MM/dd/yyyy"))
не стесняйтесь сказать, может ли функция быть лучше после ее критики, что все файлы на A перемещаются на B с хорошей дельта-системой.