2013-06-27 79 views

回答

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 
+0

謝謝..我已經閱讀了文檔,並得到了你提到的關於屬性的觀點......並且你能否給我提供任何對象存在陳舊數據的例子? – kombsh

+0

已添加@kombsh示例。只是舉個例子,例如 –

+0

'+ 1'。 –

0

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) Method的工作原理。

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

FileInfo的值只加載一次,然後緩存。爲了得到 電流值,獲取屬性

你也可以檢查這個問題之前,調用刷新();