Принудительно открыть файл - PullRequest
3 голосов
/ 06 апреля 2009

Одна программа на C ++ заполняет файл журнала, она хранит дескриптор файла журнала. Я хочу открыть этот файл журнала с помощью программы на C # и проанализировать его, чтобы увидеть, была ли определенная строка добавлена ​​в файл журнала.

Однако, если я открываю файл журнала с помощью C #, я получаю исключение «этот файл используется другим процессом». Используемый код:

using(StreamReader reader = File.OpenRead(myFile))//IOException

Программа C ++ открывает файл с (я не могу изменить программу C ++):

m_hFile = tsopen(m_csFilePath, 
_O_WRONLY|_O_APPEND|_O_TRUNC|_O_CREAT|_O_BINARY,
_SH_DENYWR,
_S_IREAD | _S_IWRITE); 

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

Ответы [ 2 ]

8 голосов
/ 06 апреля 2009

Возможно, попробуйте открыть файл с ReadWrite FileShare?

File.Open(myFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
1 голос
/ 06 апреля 2009

Вы можете сделать копию снимка файла журнала, используя File.Copy, и попытаться открыть его.

...