FileInfo.Length 未反映当前使用的数据文件增长
Currently used data file growth is not reflected by FileInfo.Length
我需要在不打开数据库文件的情况下理想地获取它的大小。事实上,我需要在文件更改时启动一个事件。
它是一个 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
不会随着文件的增长而改变。
在不实际检查文件内容的情况下,是否有任何解决此问题的方法?
我改台词了
_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();
}
现在可以了。虽然不确定这是否是最好的方法。
我需要在不打开数据库文件的情况下理想地获取它的大小。事实上,我需要在文件更改时启动一个事件。 它是一个 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
不会随着文件的增长而改变。
在不实际检查文件内容的情况下,是否有任何解决此问题的方法?
我改台词了
_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();
}
现在可以了。虽然不确定这是否是最好的方法。