代码之家  ›  专栏  ›  技术社区  ›  Vojtěch Dohnal

当前使用的数据文件增长不由fileinfo.length反映

  •  1
  • Vojtěch Dohnal  · 技术社区  · 6 年前

    我需要在不打开数据库文件的情况下获得理想的数据库文件大小。实际上,当文件更改时,我需要启动一个事件。 它是一个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 回复  |  直到 6 年前
        1
  •  0
  •   Vojtěch Dohnal    6 年前

    我改了台词

    _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();
    }
    

    现在它开始工作了。但不确定这是否是最好的方法。