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

时间:2013-06-27 05:27:06

标签: c# filesystems

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

来自 MSDN ;

  

FileSystemInfo.Refresh从当前获取文件的快照   文件系统。

     

在尝试获取属性之前,必须调用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) Method的工作原理。

来自https://stackoverflow.com/a/1448727/447156

  

FileInfo值仅加载一次然后缓存。得到的   当前值,在获取属性之前调用Refresh()

您也可以查看此问题;