コード例 #1
0
ファイル: ShareInfoService.cs プロジェクト: Kayomani/FAP
        /// <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
            {
            }
        }
コード例 #2
0
ファイル: ShareInfoService.cs プロジェクト: gmcclelland90/FAP
        /// <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
            {
            }
        }