/// <summary> /// Refresh memory cache with information about the actual files /// </summary> /// <param name="directory"></param> /// <param name="model"></param> private void RefreshFileInfo(DirectoryInfo directory, Directory model) { try { long newSize = 0; long objCount = 0; //Check file list var newFileList = new List<Entities.FileSystem.File>(); FileInfo[] sysfiles = directory.GetFiles(); foreach (FileInfo finfo in sysfiles) { newSize += finfo.Length; objCount++; var cf = new Entities.FileSystem.File(); cf.Name = finfo.Name; cf.Size = finfo.Length; cf.LastModified = finfo.LastWriteTime.ToFileTime(); newFileList.Add(cf); } //Update model with file info List<Entities.FileSystem.File> oldList = model.Files; model.Files = newFileList; oldList.Clear(); sysfiles = null; //Check folder info. var newDirList = new List<Directory>(); var oldDirs = new Dictionary<string, Directory>(); foreach (Directory d in model.SubDirectories) oldDirs.Add(d.Name, d); DirectoryInfo[] dirs = directory.GetDirectories(); //Add,refresh foreach (DirectoryInfo dir in dirs) { Directory sub = null; if (oldDirs.ContainsKey(dir.Name)) sub = oldDirs[dir.Name]; else { sub = new Directory(); sub.Name = dir.Name; } sub.LastModified = dir.LastWriteTime.ToFileTime(); RefreshFileInfo(dir, sub); newDirList.Add(sub); //Add totals to the parent objCount += sub.ItemCount; newSize += sub.Size; } //Update model List<Directory> oldDirList = model.SubDirectories; model.SubDirectories = newDirList; oldDirList.Clear(); //Sum totals model.Size = newSize; model.ItemCount = objCount; } catch { } }
/// <summary> /// Refresh memory cache with information about the actual files /// </summary> /// <param name="directory"></param> /// <param name="model"></param> private void RefreshFileInfo(DirectoryInfo directory, Directory model) { try { long newSize = 0; long objCount = 0; //Check file list var newFileList = new List <Entities.FileSystem.File>(); FileInfo[] sysfiles = directory.GetFiles(); foreach (FileInfo finfo in sysfiles) { newSize += finfo.Length; objCount++; var cf = new Entities.FileSystem.File(); cf.Name = finfo.Name; cf.Size = finfo.Length; cf.LastModified = finfo.LastWriteTime.ToFileTime(); newFileList.Add(cf); } //Update model with file info List <Entities.FileSystem.File> oldList = model.Files; model.Files = newFileList; oldList.Clear(); sysfiles = null; //Check folder info. var newDirList = new List <Directory>(); var oldDirs = new Dictionary <string, Directory>(); foreach (Directory d in model.SubDirectories) { oldDirs.Add(d.Name, d); } DirectoryInfo[] dirs = directory.GetDirectories(); //Add,refresh foreach (DirectoryInfo dir in dirs) { Directory sub = null; if (oldDirs.ContainsKey(dir.Name)) { sub = oldDirs[dir.Name]; } else { sub = new Directory(); sub.Name = dir.Name; } sub.LastModified = dir.LastWriteTime.ToFileTime(); RefreshFileInfo(dir, sub); newDirList.Add(sub); //Add totals to the parent objCount += sub.ItemCount; newSize += sub.Size; } //Update model List <Directory> oldDirList = model.SubDirectories; model.SubDirectories = newDirList; oldDirList.Clear(); //Sum totals model.Size = newSize; model.ItemCount = objCount; } catch { } }