diff --git a/Source/FileManager/FileUtility.cs b/Source/FileManager/FileUtility.cs
index 484ed1a8..b2bc4274 100644
--- a/Source/FileManager/FileUtility.cs
+++ b/Source/FileManager/FileUtility.cs
@@ -244,27 +244,14 @@ namespace FileManager
/// List of files
public static IEnumerable SaferEnumerateFiles(LongPath path, string searchPattern = "*", SearchOption searchOption = SearchOption.TopDirectoryOnly)
{
- var foundFiles = Enumerable.Empty();
-
- try
- {
- if (searchOption == SearchOption.AllDirectories)
- {
- IEnumerable subDirs = Directory.EnumerateDirectories(path).Select(p => (LongPath)p);
- // Add files in subdirectories recursively to the list
- foreach (string dir in subDirs)
- foundFiles = foundFiles.Concat(SaferEnumerateFiles(dir, searchPattern, searchOption));
- }
-
- // Add files from the current directory
- foundFiles = foundFiles.Concat(Directory.EnumerateFiles(path, searchPattern).Select(f => (LongPath)f));
- }
- catch (UnauthorizedAccessException) { }
- catch (PathTooLongException) { }
- // Symbolic links will result in DirectoryNotFoundException. Ohter logical directories might also. Just skip them. Don't want to risk (or have to handle) infinite recursion
- catch (DirectoryNotFoundException) { }
-
- return foundFiles;
+ var enumOptions = new EnumerationOptions
+ {
+ RecurseSubdirectories = searchOption == SearchOption.AllDirectories,
+ IgnoreInaccessible = true,
+ ReturnSpecialDirectories = false,
+ MatchType = MatchType.Simple
+ };
+ return Directory.EnumerateFiles(path.Path, searchPattern, enumOptions).Select(p => (LongPath) p);
}
///