Как проверить, был ли файл изменен в c # - PullRequest
1 голос
/ 09 марта 2012

Я хочу попросить пользователя сохранить файл, когда в него будут внесены какие-то изменения, но проблема в том, что я не могу это сделать.

Некоторые люди предлагают использовать FileInfo класс, но он дает вам только lastWriteTime, LastAccessTime и CreationTime.

Я хотел бы использовать FileInfo класс, а не FileSystemWatcher, чтобы проверить наличие изменений, но как?

Пример. Предположим, что пользователь отредактировал файл в моей программе, который он загрузил, и щелкнул EXIT, я хочу проверить, были ли внесены какие-либо изменения в файл. Если нет, выйдите. Если есть, предложите пользователю сохранить файл. Итак, как я могу проверить наличие изменений в этом файле?

Ответы [ 2 ]

5 голосов
/ 09 марта 2012

Самый простой способ - вычислить MD5-хеш файла и сравнить с исходным MD5-хешем, и если эти два значения не совпадают, файл был изменен ...

        using (var md5 = new MD5CryptoServiceProvider())
        {
            var buffer = md5.ComputeHash(File.ReadAllBytes(filename));
            var sb = new StringBuilder();
            for (var i = 0; i < buffer.Length; i++)
            {
                sb.Append(buffer[i].ToString("x2"));
            }
            return sb.ToString();
        }
1 голос
/ 10 марта 2012

Вот несколько примеров использования класса File или FileInfo для получения LastWriteTime.

http://www.csharp -examples.net / создания файла-модификации времени /

Я бы сохранил временную метку файла при его загрузке, а затем сравнил бы его с File.GetLastWriteTime (), чтобы увидеть, был ли файл сохранен с тех пор. Если файл был изменен внешним источником, вы можете дать пользователю возможность отказаться от их изменений и перезагрузить файл или сохранить их в новом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...