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