FileSystemInfo.Refresh() 函数有什么用途

本文关键字:什么 函数 Refresh FileSystemInfo | 更新日期: 2023-09-27 18:20:00

我想使用函数FileSystemInfo.Refresh()..但我想知道如果我们调用这个函数会发生什么。

FileSystemInfo.Refresh() 函数有什么用途

MSDN - FileSystemInfo.Refresh

刷新对象的状态。

调用的原因是获取文件的"最新"属性。如果在磁盘上更新了信息,则原始对象可能具有过时的数据。即MSDN明确指出属性大小写:

在尝试获取属性信息之前,必须调用刷新。

显示过时的示例:

// create a file at this location
var fileName = @"E:'Temp'attr.txt";
var fi = new FileInfo(fileName);
Console.WriteLine("Attributes: {0}", fi.Attributes); // Archive
var fi2 = new FileInfo(fileName);
fi2.Attributes = fi2.Attributes | FileAttributes.ReadOnly;
Console.WriteLine("New Attributes: {0}", fi2.Attributes); // Archive, ReadOnly
Console.WriteLine("Stale attributes: {0}", fi.Attributes); // Archive
fi.Refresh();
Console.WriteLine("Refreshed attributes: {0}",fi.Attributes);// Archive, ReadOnly

来自 MSDN;

FileSystemInfo.Refresh 从当前 文件系统。

在尝试获取属性之前,必须调用刷新 信息,否则信息将过时。

它显式使用内部方法File.FillAttributeInfo

public void Refresh()
{
  this._dataInitialised = File.FillAttributeInfo(this.FullPath, ref this._data, false, false);
}

您可以查看File.​FillAttributeInfo(String, WIN32_FILE_ATTRIBUTE_DATA&, Boolean, Boolean)方法的工作原理。

从 https://stackoverflow.com/a/1448727/447156

文件信息值仅加载一次,然后缓存。要获得 当前值,在获取属性之前调用 Refresh((

您也可以检查此问题;

  • 在 C# 中缓存文件信息属性