FileInfo.Length, используемый в настоящее время прирост файла данных, не отражается - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно получить размер файла базы данных в идеале, не открывая его. На самом деле мне нужно запустить событие, когда файл меняется. Это файл DataFlex DAT, довольно устаревшее приложение базы данных. Файл открывается и используется приложением базы данных, а FileInfo неверно сообщает о размере.

Вероятно, причина описана здесь: https://blogs.msdn.microsoft.com/oldnewthing/20111226-00/?p=8813

Я использую эту конструкцию C #:

private FileInfo _dbFileInfo = new FileInfo("...");
...

_dbFileInfo.Refresh();
var len = _dbFileInfo.Length;

Но _dbFileInfo.Length не изменяется при увеличении файла. Есть ли способ обойти эту проблему без проверки содержимого файла?

1 Ответ

0 голосов
/ 04 июля 2018

Я изменил строки

_dbFileInfo.Refresh();
var len = _dbFileInfo.Length;

до

long len;
using (FileStream fs = File.Open(_dbFileInfo.FullName, 
                                 FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
     len = fs.Length;
     fs.Close();
}

И теперь это работает. Хотя не уверен, что это лучший подход.

...