File.LastWriteTime Другой NTFS FAT?

У меня есть эта функция для проверки копии файла: это важная функция резервного копирования, поэтому я должен быть уверен, что оба файла точно такие же (еще не реализованы безопасность и атрибут).

Вот:

 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 с хорошей дельта-системой.


person Zwan    schedule 21.04.2017    source источник
comment
ссылка - это ответ самого себя, который не содержит никакого кода в качестве ответа для меня.   -  person Zwan    schedule 21.04.2017
comment
я имею в виду, что функция, которая анализирует тип диска и преобразует дату и время в правильное значение?   -  person Zwan    schedule 21.04.2017