public static DriveObject getDriveContents(string DrivePath, string AltName) { DataManager.LogMessage("Getting Drive Contents of " + DrivePath); // Form Directory Object DriveObject rootDrive = ConstructDriveObject(DrivePath, DriveObject.DriveObjectType.Directory, AltName); DataManager.LogMessage("Root Drive Object made"); ProcessDirectory(rootDrive); return(rootDrive); }
/// <summary> /// Recursivly searches through a given path, building nested DriveObjects for all subdirectories and files. /// </summary> /// <param name="curDirectory"></param> private static decimal ProcessDirectory(DriveObject curDirectory) { decimal size = 0; try { DataManager.LogMessage("Processing Directory of path: " + curDirectory.path); // Recurse into subdirectories of this directory. string[] subdirectoryEntries = Directory.GetDirectories(curDirectory.path); foreach (string subdirectory in subdirectoryEntries) { if (Directory.Exists(subdirectory)) { DriveObject subDriveObject = ConstructDriveObject(subdirectory, DriveObject.DriveObjectType.Directory); curDirectory.addSubDirectory(subDriveObject); size += ProcessDirectory(subDriveObject); } } // Process the list of files found in the directory. string[] fileEntries = Directory.GetFiles(curDirectory.path); foreach (string fileName in fileEntries) { if (File.Exists(fileName)) { DriveObject subDriveObject = ConstructDriveObject(fileName, DriveObject.DriveObjectType.File); curDirectory.addSubDirectory(subDriveObject); size += subDriveObject.size; } } curDirectory.size = size; } catch (System.UnauthorizedAccessException e) { DataManager.LogMessage(e.Message); } return(size); }