var myFileList = new List<MyCustomFileInfo>();
var dir = new DirectoryInfo(@"C:\SomeDir");
foreach (var file in dir.GetFiles())
{
myFileList.Add(new MyCustomFileInfo()
{
Filename = file.Name,
ModifiedOn = file.LastWriteTime,
SizeInBytes = (int)file.Length
});
}
dir.GetFiles執行得非常快,但是當我開始訪問屬性時,似乎個別調用了文件系統(這很慢)。什麼是使用C#獲取包含文件大小的文件的元數據的快速方法?
我該如何重寫這個,這樣我才能以更有效的方式獲得所有文件名,lastWriteTime和文件大小?
Nb。代碼被削減以說明這一點。我現實世界的用例更復雜(同步),但這是性能問題的核心。
哪個文件系統?你需要支持FAT還是隻有NTFS才行? –
我不確定是否/如何改進(不會懷疑),但獲取除名稱以外的目錄內容的任何信息都將成爲性能打擊,無論如何。 – Jon
不完全確定,@ThomasW。在我的具體情況下,它是一個網絡共享,但您可以通過需要NTFS的通用方式回答 - 如果它不適合我,它可能會幫助其他人。 :) – Kjensen