Please have a look below,
using System;
using System.IO;
using System.Linq;
using System.Text;
namespace Chapter_5
{
class Program
{
static void Main()
{
string directoryName = @"C:\\textfiles";
Console.WriteLine(FindFileswhichReachedLimit(directoryName));
}
static string FindFileswhichReachedLimit(string directoryName)
{
StringBuilder builder = new StringBuilder();
Directory.GetFiles(directoryName)
.Where(file =>
{
return IsReachedMax(Path.Combine(directoryName, file));
})
.Select(file =>
{
return string.Format("{0,40}\t{1}{2}",
Path.GetFileName(file),
GetFileSize(Path.Combine(directoryName, file)),
Environment.NewLine);
}).ToList().ForEach(fileInfo => builder.Append(fileInfo));
return builder.ToString();
}
static bool IsReachedMax(string fileName)
{
return GetFileSize(fileName) / 1024 < 1500000;
}
static long GetFileSize(string fileName)
{
return (new FileInfo(fileName)).Length;
}
}
}
Hope it helps :)
2nd Version:
class Program
{
static void Main()
{
string directoryName = @"C:\\textfiles";
Console.WriteLine(FindFileswhichReachedLimit(directoryName));
}
static string FindFileswhichReachedLimit(string directoryName)
{
StringBuilder builder = new StringBuilder();
IList<string> files = Directory.GetFiles(directoryName);
foreach (string file in files)
{
if (IsReachedMax(Path.Combine(directoryName, file)))
{
string fileInfo = string.Format("{0,40}\t{1}{2}",
Path.GetFileName(file),
GetFileSize(Path.Combine(directoryName, file)),
Environment.NewLine);
builder.Append(fileInfo);
}
}
return builder.ToString();
}
static bool IsReachedMax(string fileName)
{
return GetFileSize(fileName) / 1024 < 1500000;
}
static long GetFileSize(string fileName)
{
return (new FileInfo(fileName)).Length;
}
}