Example #1
0
        // ******************************************************************************
        /// <summary>
        /// Returns a fully populate heirarchy for this forlder
        /// </summary>
        /// <param name="directoryInfo">Object representing the root folder to scan</param>
        /// <returns>Populated Heirarchy</returns>
        // ******************************************************************************
        CosmosDirItem ScanFolder(IDirectoryInfo directoryInfo, CancellationToken cancelToken)
        {
            CurrentItemLabel = directoryInfo.FullName;
            CosmosDirectoryInfo cosmosDirectoryInfo = (CosmosDirectoryInfo)directoryInfo;
            CosmosDirItem       thisDir             = new CosmosDirItem(directoryInfo.Name, directoryInfo.FullName);

            //thisDir.TotalValue = Math.Max(0, cosmosDirectoryInfo.CosmosSize);
            if (cancelToken.IsCancellationRequested)
            {
                return(thisDir);
            }
            double totalFolderSize = 0;

            try
            {
                // Total up the size of the content
                foreach (var file in directoryInfo.GetFiles())
                {
                    thisDir.AddContent(file.Name, file);
                    var fileSize = Math.Max(0, file.GetValue(CosmosDirectoryInfo.STREAMSIZE));
                    UnitsScannedSoFar += fileSize;
                    totalFolderSize   += fileSize;
                    file.SetValue(CosmosDirectoryInfo.STREAMSIZE, fileSize);
                    if (cancelToken.IsCancellationRequested)
                    {
                        return(thisDir);
                    }
                }

                // recurse into the child directories
                foreach (IDirectoryInfo dir in directoryInfo.GetDirectories())
                {
                    CosmosDirItem newDir = ScanFolder(dir, cancelToken);
                    thisDir.AddChild(newDir);
                }
            }
            catch (UnauthorizedAccessException) { }  // Ignore permissions problems
            catch (Exception e)
            {
#if DEBUG
                Debugger.Break();
#endif
                Debug.WriteLine("Error: " + e.Message);
            }

            //thisDir.TotalValue = totalFolderSize;

            return(thisDir);
        }
Example #2
0
        // ******************************************************************************
        /// <summary>
        /// Replacement for DirectoryInfo.GetDirectories()
        /// </summary>
        /// <returns>Array of ISliceDirectoryInfo objects</returns>
        // ******************************************************************************
        public IDirectoryInfo[] GetDirectories()
        {
            if (!scanned)
            {
                ScanDirectory(FullName, out files, out directories);
            }

            CosmosDirectoryInfo[] array = new CosmosDirectoryInfo[directories.Count];
            for (int i = 0; i < directories.Count; i++)
            {
                array[i] = new CosmosDirectoryInfo(directories[i].FullName, directories[i].GetValue(STREAMSIZE));
            }

            return(array);
        }