/// <summary> /// Creates list of <see cref="DriveInfo"/> from local drives that are ready /// </summary> /// <returns></returns> public static ActionResult <IEnumerable <DriveInfo> > GetDrivesReady() { List <DriveInfo> drives = new List <DriveInfo>(); ActionResult <IEnumerable <DriveInfo> > actionResult = new ActionResult <IEnumerable <DriveInfo> >(drives); try { foreach (DriveInfo drive in DriveInfo.GetDrives()) { if (drive.IsReady) { drives.Add(drive); } } } catch (IOException ex) { actionResult.AddFailReason($"Failed getting drives, exception message: {ex.Message}"); } catch (UnauthorizedAccessException ex) { actionResult.AddFailReason($"No access to drives, exception message: {ex.Message}"); } catch (Exception ex) { actionResult.AddFailReason($"Unknown exception getting drives, exception message: {ex.Message}"); actionResult.AddReason(ex.StackTrace); } return(actionResult); }
/// <summary> /// Creates list of <see cref="FileInfo"/> from directory.<br/> /// Does not include system files. /// </summary> /// <param name="path"></param> /// /// <param name="listHidden">If true, lists also hidden files</param> /// <returns></returns> public static ActionResult <IEnumerable <FileInfo> > GetFiles(string path, bool listHidden) { List <FileInfo> files = new List <FileInfo>(); ActionResult <IEnumerable <FileInfo> > actionResult = new ActionResult <IEnumerable <FileInfo> >(files); try { DirectoryInfo directory = new DirectoryInfo(path); foreach (FileInfo file in directory.EnumerateFiles()) { bool addToList = true; //Check if file is system or hidden file if (file.Attributes.HasFlag(FileAttributes.System)) { addToList = false; } else { if (file.Attributes.HasFlag(FileAttributes.Hidden) && !listHidden) { addToList = false; } } if (addToList) { files.Add(file); } } } catch (ArgumentException ex) { actionResult.AddFailReason($"Path '{path}' for files is wrong, exception message: {ex.Message}"); } catch (DirectoryNotFoundException ex) { actionResult.AddFailReason($"Directory '{path}' for files not found, exception message: {ex.Message}"); } catch (PathTooLongException ex) { actionResult.AddFailReason($"Path '{path}' for files is too long, exception message: {ex.Message}"); } catch (IOException ex) { actionResult.AddFailReason($"Path '{path}' for files is wrong, exception message: {ex.Message}"); } catch (SecurityException ex) { actionResult.AddFailReason($"No access to directory '{path}', exception message: {ex.Message}"); } catch (UnauthorizedAccessException ex) { actionResult.AddFailReason($"No access to directory '{path}', exception message: {ex.Message}"); } catch (Exception ex) { actionResult.AddFailReason($"Unknown exception getting files, path was: '{path}', exception message: {ex.Message}"); actionResult.AddReason(ex.StackTrace); } return(actionResult); }
/// <summary> /// Creates list of <see cref="DirectoryInfo"/> from directory's sub folders.<br/> /// Does not include system folders. /// </summary> /// <param name="path">Path to directory</param> /// <param name="listHidden">If true, lists also hidden folders</param> /// <returns></returns> public static ActionResult <IEnumerable <DirectoryInfo> > GetSubFolders(string path, bool listHidden) { List <DirectoryInfo> folders = new List <DirectoryInfo>(); ActionResult <IEnumerable <DirectoryInfo> > actionResult = new ActionResult <IEnumerable <DirectoryInfo> >(folders); try { DirectoryInfo directory = new DirectoryInfo(path); foreach (DirectoryInfo subDir in directory.EnumerateDirectories()) { bool addToList = true; //Check if directory is system or hidden directory if (subDir.Attributes.HasFlag(FileAttributes.System)) { addToList = false; } else { if (subDir.FullName.Equals(@"C:\windows", StringComparison.OrdinalIgnoreCase)) { addToList = false; } if (subDir.Attributes.HasFlag(FileAttributes.Hidden) && !listHidden) { addToList = false; } //If you do not have at a minimum read-only permission to the directory, //the Exists method will return false. if (!Directory.Exists(subDir.FullName)) { addToList = false; } if (!CanRead(subDir.FullName)) { addToList = false; } } if (addToList) { folders.Add(subDir); } } } catch (DirectoryNotFoundException ex) { actionResult.AddFailReason($"Directory '{path}' not found, exception message: {ex.Message}"); } catch (IOException ex) { actionResult.AddFailReason($"Path '{path}' for folders is wrong, exception message: {ex.Message}"); } catch (SecurityException ex) { actionResult.AddFailReason($"No access to directory '{path}', exception message: {ex.Message}"); } catch (UnauthorizedAccessException ex) { actionResult.AddFailReason($"No access to directory '{path}', exception message: {ex.Message}"); } catch (Exception ex) { actionResult.AddFailReason($"Unknown exception getting directories, path was: '{path}', exception message: {ex.Message}"); actionResult.AddReason(ex.StackTrace); } return(actionResult); }
public static ActionResult <IEnumerable <DirectoryInfo> > GetSubFolders2(string path, bool listHidden) { List <DirectoryInfo> folders = new List <DirectoryInfo>(); ActionResult <IEnumerable <DirectoryInfo> > actionResult = new ActionResult <IEnumerable <DirectoryInfo> >(folders); DirectoryInfo directory; try { directory = new DirectoryInfo(path); } catch (ArgumentNullException ex) { //path is null. Debug.WriteLine(ex.Message); actionResult.AddFailReason(ex.Message); return(actionResult); } catch (SecurityException ex) { //The caller does not have the required permission. Debug.WriteLine($"Path '{ path }': { ex.Message }"); actionResult.AddFailReason($"Path '{ path }': { ex.Message }"); return(actionResult); } catch (ArgumentException ex) { //path contains invalid characters such as ", <, >, or |. actionResult.AddFailReason($"Path '{ path }': { ex.Message }"); return(actionResult); } catch (PathTooLongException ex) { //The specified path, file name, or both exceed the system - defined maximum length. actionResult.AddFailReason($"Path '{ path }': { ex.Message }"); return(actionResult); } catch (Exception ex) { actionResult.AddFailReason(ex.Message); return(actionResult); } //if (!directory.Exists) //{ // Debug.WriteLine($"Path '{ path }' does not exists."); // return actionResult; //} try { foreach (DirectoryInfo subDir in directory.EnumerateDirectories()) { bool addToList = true; //Check if directory is system or hidden directory if (subDir.Attributes.HasFlag(FileAttributes.System)) { addToList = false; } else { if (subDir.FullName.Equals(@"C:\windows", StringComparison.OrdinalIgnoreCase)) { addToList = false; } if (subDir.Attributes.HasFlag(FileAttributes.Hidden) && !listHidden) { addToList = false; } //If you do not have at a minimum read-only permission to the directory, //the Exists method will return false. if (!Directory.Exists(subDir.FullName)) { addToList = false; } if (!CanRead(subDir.FullName)) { addToList = false; } } if (addToList) { folders.Add(subDir); } } } catch (DirectoryNotFoundException ex) { actionResult.AddFailReason($"Directory '{path}' not found, exception message: {ex.Message}"); } catch (IOException ex) { actionResult.AddFailReason($"Path '{path}' for folders is wrong, exception message: {ex.Message}"); } catch (SecurityException ex) { actionResult.AddFailReason($"No access to directory '{path}', exception message: {ex.Message}"); } catch (UnauthorizedAccessException ex) { actionResult.AddFailReason($"No access to directory '{path}', exception message: {ex.Message}"); } catch (Exception ex) { actionResult.AddFailReason($"Unknown exception getting directories, path was: '{path}', exception message: {ex.Message}"); actionResult.AddReason(ex.StackTrace); } return(actionResult); }