Как гарантировать, что файл правильно записан в файловую систему?

StackOverflow https://stackoverflow.com/questions/14726901

  •  07-03-2022
  •  | 
  •  

Вопрос

Я приложение, которое читает файл из ZIP-архива и сохраняет его в файл файловой системы. После написания его в файловую систему я начну начать немедленно, чтобы прочитать этот файл с помощью читателя SAX2. По большему количеству файлов (300+ Mb) иногда возникает, что Sax2 останавливает разбор из-за неразборчивого тега. Но когда я проверяю файл (или даже попробую прочитать его позже), он работает, поэтому файл это я в порядке.

FZipKit.ExtractToStream(LFileName, LStream);
LStream.SaveToFile(OutputFilename);
SAX2.processUrl(OutputFilename);

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

Есть ли способ убедиться, что файл был написан или парометр был покрасен в файловую систему?

Спасибо

Это было полезно?

Решение

Я собираюсь в первую очередь предположить, что Parser XML работает правильно. Если он не способен к чтению файлов, ну решение очевидно.

Что приводит нас к посмотрению, как файл создан. Когда вы называете SaveToFile, файл открыт, написано, закрыты и буферы промыты. В простой системе ванили ваш анализатор XML увидит все содержимое файла. Единственный вывод состоит в том, что что-то мешает. Самым похожим на подозрение - ваш вирусный сканер. Многие сканеры, даже самые уважаемые, не могут правильно обращаться с закрытым файлом, а затем немедленно открыты.

Суть в том, что ваш код в порядке, и проблема почти наверняка лежит в вашей местной среде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top