Проверка текста, записанного в текстовый файл
Мне нужен совет, как справиться с уникальной ситуацией с одним из моих друзей. Vb.net приложения. Это приложение создает новый текстовый файл, который в основном является подмножеством другого текстового файла. Приложение работает следующим образом:
* Скопируйте исходный текстовый файл с сетевого диска на диск локальных компьютеров.
* Откройте скопированный исходный текстовый файл для чтения
* Откройте новый текстовый файл для записи
* Прочитайте строку исходного файла #1 и сохраните результаты в переменной, а затем запишите то, что находится в переменной, в новый текстовый файл •
* Повторите описанный выше шаг X раз.
* Считывайте исходный текстовый файл строка за строкой и ищите строку, содержащую “Y”
* Скопируйте эту строку в новый текстовый файл •
* Продолжайте читать исходный текстовый файл строка за строкой и копировать данные в новый текстовый файл, пока не найдете строку, содержащую “Z”
* Закройте оба текстовых файла.
* Переместить новый текстовый файл в другую папку
Вышеприведенный код работает уже не менее 8 лет на более чем 30 различных компьютерах, и до прошлой недели у нас никогда не было проблем. Затем на прошлой неделе мы ни с того ни с сего заметили, что один из новых текстовых файлов отличается на 1 строку. исходный файл. Через несколько дней мы заметили второй файл, который тоже был другим. Оба файла пришли с одного компьютера. В обоих случаях исходный файл изначально имел цифру "1“, которая была изменена на” 0" в новом текстовом файле.
Чтобы проверить это дальше, я создал тестовое приложение, которое выполняло одни и те же шаги несколько раз. Я повторил описанный выше процесс дважды для нескольких текстовых файлов. Затем я прогнал 2 (предположительно идентичных) текстовых файла через алгоритм хеширования, чтобы проверить, что файлы идентичны. Из примерно 200 попыток он нашел 8 файлов, которые были разными.
Я был потрясен, потому что никогда не видел проблемы, когда данные, которые я намеревался записать на жесткий диск, не были точно такими же, как то, что было на самом деле записано на диск. Мы проверили жесткий диск на компьютере, и он оказался в порядке, поэтому мы заменили компьютер на другой блок, и проблема, казалось, была решена. Мы до сих пор точно не выяснили, в чем проблема с компьютером.
Что я уже пробовал:
Текстовые файлы, создаваемые этим приложением, представляют собой файлы G-кода, используемые для управления станком с ЧПУ, который режет металлические детали. Созданные им плохие текстовые файлы заставили нас отказаться от двух дорогих частей. Из-за этого я пытаюсь понять, что я могу сделать в своем приложении, что предотвратит это. Моя первая мысль заключалась в том, чтобы добавить ту же логику, что и в моем тестовом приложении, где я дважды создаю новую ленту, а затем сравниваю 2 файла на предмет равенства. Помимо удвоения времени обработки, этот параметр не является стопроцентным доказательством ошибок, потому что можно было бы продублировать одну и ту же ошибку в обоих текстовых файлах и при этом отличаться от исходного текстового файла. Есть ли у кого-нибудь идеи получше? Можно ли сравнивать каждую строчку сразу после ее написания? Я не думаю, что вы можете читать и писать одновременно, поэтому для этого потребуется открывать и закрывать каждый раз при переключении с чтения на запись. Любая помощь будет оценена.