using Microsoft.SharePoint;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace CheckingFileSize
{
   
class Program
   
{
       
private static int file_count = 0;
       
private static int mbfile_count = 0;
       
static int folder_count = 0;
       
private static double file_mb_size = 0;
       
private static int dir_too_count = 0;
       
private static int file_too_count = 0;
       
static System.Data.DataTable table = new System.Data.DataTable();
       
///
       
/// Get the file count of a
given directory recursively.
       
///
       
static void Main(string[] args)
       
{
            try
            {
                // Here we create a DataTable with four
columns.
                table.Columns.Add("File Name", typeof(string));
                table.Columns.Add("File Size", typeof(string));
                table.Columns.Add("File MBSize", typeof(string));
                table.Columns.Add("SizeStatus", typeof(string));
                table.Columns.Add("Status", typeof(string));
                table.Columns.Add("DateTime", typeof(DateTime));
                table.Columns.Add("File Path", typeof(string));
                Console.Write("Please enter folder path : ");
                string FolderPath = Console.ReadLine();
                string dirPath = @"" + FolderPath + "";
                string dirName = Path.GetFileNameWithoutExtension(dirPath);
                Console.WriteLine("Checking all files count-----");
                System.Data.DataTable tableExport =
GetSubFolder(dirPath);
               
ExportListFromTable(tableExport, dirName + "_AllFileSizeLog");
                Console.WriteLine("---------------------------------------------------");
                Console.WriteLine("Total Files Count ==> {0}", file_count);
                Console.WriteLine("Total folder Count ==> {0}", folder_count);
                Console.WriteLine("---------------------------------------------------");
                Console.WriteLine("Total <100 MB Files Count ==>
{0}", mbfile_count);
                Console.WriteLine("---------------------------------------------------");
                Console.WriteLine("dir too big Total Count ==>
{0}", dir_too_count);
                Console.WriteLine("Files too big Count ==>
{0}", file_too_count);
                Console.ReadKey();
            }
            catch
(Exception ex)
            {
                Console.Write("Error : " + ex.Message);
                Console.Write("Trace : " + ex.StackTrace);
            }
       
}
       
/// <summary>
       
/// get folder tree
       
/// </summary>
       
/// <param name="folder"></param>
       
/// <returns></returns>
       
static System.Data.DataTable GetSubFolder(string folder)
        {
            if
(folder.Length < 255)
            {
                string[] subFolders = Directory.GetDirectories(folder);
                foreach (string subFolder in subFolders)
                {
                    folder_count++;
                    GetSubFolder(subFolder);
                }
                string[] files = Directory.GetFiles(folder); FileInfo
fileInfo = null;
                foreach (string file in files)
                {
                     long size = 0; string nameFile = Path.GetFileName(file);
                        if (file.Length < 255)
                        {
                            fileInfo = new FileInfo(file);
                            size =
fileInfo.Length;
                            file_mb_size =
ConvertBytesToMegabytes(size);
                            if (file_mb_size < 100)
                            {
                                mbfile_count++;
                               
table.Rows.Add(nameFile, size, file_mb_size.ToString("0.000"), "<100", "Success", DateTime.Now, file);
                            }
                            else
                            {
                               
table.Rows.Add(nameFile, size, file_mb_size.ToString("0.000"), ">100", "Success", DateTime.Now, file);
                            }
                        }
                        //truncate files to 255
characters
                        string truncatedFilename = file;
                        if (truncatedFilename.Length
> 255)
                        {
                            file_too_count++;
                            truncatedFilename =
truncatedFilename.Substring(0, 255);
                            //replace any single quote in
filename with two double quotes
                            truncatedFilename =
truncatedFilename.Replace("'",
"''");
                           
table.Rows.Add(nameFile, size, file_mb_size.ToString("0.000"), "Null", "File Long", DateTime.Now, file);
                        }
                        Console.WriteLine("=>" + file_count + " :" + nameFile);
                    file_count++;
                }
            }
            else
            {
                dir_too_count++;
                table.Rows.Add(folder, "0", file_mb_size.ToString("0.000"), "Null", "Folder Long", DateTime.Now, "None");
            }
            return table;
       
}
       
/// <summary>
       
/// bytes to MB
    
   /// </summary>
       
/// <param name="bytes"></param>
       
/// <returns></returns>
       
static double ConvertBytesToMegabytes(long bytes)
       
{
            return (bytes / 1024f) / 1024f;
       
}
       
/// <summary>
       
/// Checking file name char
       
/// </summary>
       
/// <param name="cleanPath"></param>
       
/// <returns></returns>
       
private static string cleanPath(string toCleanPath, string replaceWith = "-")
       
{
            //get just the filename - can't use Path.GetFileName since
the path might be bad!  
            string[] pathParts = toCleanPath.Split(new
char[] { '\\' });
            string newFileName = pathParts[pathParts.Length - 1];
            //get just the path 
            string newPath = toCleanPath.Substring(0, toCleanPath.Length -
newFileName.Length);
            //clean bad path chars 
            foreach (char badChar in Path.GetInvalidPathChars())
            {
                newPath =
newPath.Replace(badChar.ToString(), replaceWith);
            }
            //clean bad filename chars 
            foreach (char badChar in Path.GetInvalidFileNameChars())
            {
                newFileName =
newFileName.Replace(badChar.ToString(), replaceWith);
          
 }
            //remove duplicate "replaceWith" characters. ie:
change "test-----file.txt" to "test-file.txt"  
            if
(string.IsNullOrWhiteSpace(replaceWith)
== false)
            {
                newPath =
newPath.Replace(replaceWith.ToString() + replaceWith.ToString(),
replaceWith.ToString());
                newFileName =
newFileName.Replace(replaceWith.ToString() + replaceWith.ToString(),
replaceWith.ToString());
            }
            //return new, clean path: 
            return newPath + newFileName;
       
}
       
/// <summary>
       
/// Export to xls to directory
Path
       
/// </summary>
       
public static void
ExportListFromTable(System.Data.DataTable table, string filename)
       
{
            DirectoryInfo dir = new DirectoryInfo(@"C:\Reports");
            dir.Create();
            string excelFileName = string.Format(@"C:\Reports\" + filename + "_{0}.xls", DateTime.Now.Ticks.ToString());
            FileInfo file = new FileInfo(excelFileName);
            StreamWriter streamWriter = file.CreateText();
            StringWriter stringWriter = new
StringWriter();
            HtmlTextWriter htmlTextWriter = new
HtmlTextWriter(stringWriter);
            Table tblListView = new Table();
            tblListView.ID = "_tblListView";
            tblListView.BorderStyle = BorderStyle.Solid;
            tblListView.BorderWidth = Unit.Pixel(1);
            tblListView.GridLines = GridLines.Horizontal;
            tblListView.BorderColor =
System.Drawing.Color.LightGreen;
            System.Data.DataView dvListViewData =
table.DefaultView;
            if
(dvListViewData != null &&
dvListViewData.Count > 0)
            {
                tblListView.Rows.Add(new TableRow());
                tblListView.Rows[0].BackColor =
System.Drawing.Color.LightGreen;
                tblListView.Rows[0].Font.Bold =
true;
                for (int i = 0; i <
table.Columns.Count; i++)
                {
                   
tblListView.Rows[0].Cells.Add(new
TableCell());
                   
tblListView.Rows[0].Cells[i].Text = table.Columns[i].ToString();
                }
                for (int i = 0; i <
dvListViewData.Count; i++)
                {
                    tblListView.Rows.Add(new TableRow());
                    for (int j = 0; j <
table.Columns.Count; j++)
                    {
                        tblListView.Rows[i +
1].BorderStyle = BorderStyle.Dotted;
                        tblListView.Rows[i +
1].Cells.Add(new TableCell());
         
              tblListView.Rows[i +
1].Cells[j].Text = dvListViewData[i][j].ToString();
                    }
                }
            }
           
tblListView.RenderControl(htmlTextWriter);
           
streamWriter.Write(stringWriter.ToString());
            htmlTextWriter.Close();
            streamWriter.Close();
            stringWriter.Close();
       
}
   
}
}
No comments:
Post a Comment