2014-11-13 4 views
1

Мы планируем перенести портал с одной платформы (A) на другую (B), и для этого поставщик предоставляет генератору возможность генерировать XML для A, который будет использоваться нами для перехода на B.Файл доступа, который записывается

Теперь эта утилита имеет ошибку, которая после генерации соответствующего XML не прекращается, а переносит на нее статические нежелательные узлы.

С этой целью я пишу утилиту C# для завершения приложения, когда XML начинает получать нежелательные узлы.

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

var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

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

+0

Выглядит неплохо, но почему вы не можете попросить муравья посмотреть, что происходит? – Reniuz

ответ

0

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

+0

любое обходное решение? так как я не могу изменить утилиту, поскольку она предоставляется поставщиком – Saksham

+0

Как насчет файловой системы режима пользователя? Например [этот поддерживает .NET] (http://dokan-dev.net/en/about/). Идея состоит в том, чтобы сделать прокси для драйвера файловой системы, который перехватит все операции записи/сброса из приложения. – neleus

+0

Я боюсь, что это будет нелегко ... Если вы каким-то образом обнаружите, что реальное преобразование было закончено, вы можете убить эту утилиту и выполнить пост-обработку XML. –

-1

Что касается режима пользователя Файловая система? Например, this driver supports .NET extensions. Идея состоит в том, чтобы сделать прокси для драйвера файловой системы, который перехватит все операции записи/сброса из приложения.

+0

Я хотел бы знать причину нисходящего хода. Что не так с моим ответом? – neleus

Смежные вопросы