- class QuerySize
- {
- public static void Main()
- {
- string startFolder = @"c:\program files\Microsoft Visual Studio 9.0\VC#";
-
- // Take a snapshot of the file system.
- // This method assumes that the application has discovery permissions
- // for all folders under the specified path.
- IEnumerable<string> fileList = System.IO.Directory.GetFiles(startFolder, "*.*", System.IO.SearchOption.AllDirectories);
-
- var fileQuery = from file in fileList
- select GetFileLength(file);
-
- // Cache the results to avoid multiple trips to the file system.
- long[] fileLengths = fileQuery.ToArray();
-
- // Return the size of the largest file
- long largestFile = fileLengths.Max();
-
- // Return the total number of bytes in all the files under the specified folder.
- long totalBytes = fileLengths.Sum();
-
- Console.WriteLine("There are {0} bytes in {1} files under {2}",
- totalBytes, fileList.Count(), startFolder);
- Console.WriteLine("The largest files is {0} bytes.", largestFile);
-
- // Keep the console window open in debug mode.
- Console.WriteLine("Press any key to exit.");
- Console.ReadKey();
- }
-
- // This method is used to swallow the possible exception
- // that can be raised when accessing the System.IO.FileInfo.Length property.
- static long GetFileLength(string filename)
- {
- long retval;
- try
- {
- System.IO.FileInfo fi = new System.IO.FileInfo(filename);
- retval = fi.Length;
- }
- catch (System.IO.FileNotFoundException)
- {
- // If a file is no longer present,
- // just add zero bytes to the total.
- retval = 0;
- }
- return retval;
- }
- }