示例#1
0
        /*  This method prints the contents of folderList and fileList to a
         *  text file named "directory contents.txt", along with some other
         *  useful information. There is also lots of arbitrary formatting
         *  to make the results more readable. */
        public void exportListToFile()
        {
            StreamWriter outputFile = new StreamWriter(@".\directory contents.txt", true);
            string       listHead   = String.Format("The contents of {0} are:\r\n", this.dir.FullName);

            outputFile.WriteLine(listHead);
            StringBuilder itemListing = new StringBuilder();

            if (this.folderList.Any() == false && this.fileList.Any() == false)
            {
                outputFile.WriteLine("EMPTY".PadLeft(40));
            }
            else
            {
                foreach (ItemTraits folder in this.folderList)
                {
                    SizeTraits folderSize = getSizeTraits((float)folder.itemSize);
                    itemListing.AppendFormat("{0}{1}{2}{3}",
                                             "".PadLeft(4),
                                             "Folder".PadRight(10),
                                             this.sliceString(folder.itemName, 40),
                                             String.Concat(folderSize.size.ToString("0.## ") +
                                                           folderSize.unit).PadLeft(13));
                    outputFile.WriteLine(itemListing);
                    itemListing.Clear();
                }
                foreach (ItemTraits file in this.fileList)
                {
                    SizeTraits fileSize = getSizeTraits((float)file.itemSize);
                    itemListing.AppendFormat("{0}{1}{2}{3}",
                                             "".PadLeft(4),
                                             "File".PadRight(10),
                                             this.sliceString(file.itemName, 40),
                                             String.Concat(fileSize.size.ToString("0.## ") +
                                                           fileSize.unit).PadLeft(13));
                    outputFile.WriteLine(itemListing);
                    itemListing.Clear();
                }
            }
            long       dirSize        = getFolderSize(this.dir);
            SizeTraits dirSizeTraits  = getSizeTraits((float)dirSize);
            string     dirSizeListing = String.Format("Total directory size = {0:0.00} {1}",
                                                      dirSizeTraits.size,
                                                      dirSizeTraits.unit);
            string listTail = String.Format("\r\n{0}\r\n", dirSizeListing.PadLeft(71));

            outputFile.WriteLine(listTail);
            outputFile.Close();
        }
示例#2
0
        /*  This method takes the size of a file/folder in bytes, and converts
         *  it to either giga-, mega-, or kilobytes depending on which is most
         *  appropriate. It also appends the relevant unit into the "unit" field
         *  of a a SizeTraits struct, which can later be printed. */
        SizeTraits getSizeTraits(float originalSize)
        {
            SizeTraits result = new SizeTraits();

            result.size = originalSize;
            result.unit = "B";
            if (originalSize / 1E9 >= 1)
            {
                result.size = originalSize / (float)1E9;
                result.unit = "GB";
            }
            else if (originalSize / 1E6 >= 1)
            {
                result.size = originalSize / (float)1E6;
                result.unit = "MB";
            }
            else if (originalSize / 1E3 >= 1)
            {
                result.size = originalSize / (float)1E3;
                result.unit = "KB";
            }
            return(result);
        }