public List <string> GetFiles(string directory, string searchPattern = null, SearchOption searchOption = SearchOption.TopDirectoryOnly) { if (!IsLongPath(directory)) { return(Directory.GetFiles(directory)?.ToList()); } else { return(Win32LongPathDirectory.GetFiles(directory, searchPattern, searchOption)); } }
private static void DeleteDirectoriesRecrusive(string[] directories) { foreach (string directory in directories) { var files = Win32LongPathDirectory.GetFiles(GetWin32LongPath(directory), null, System.IO.SearchOption.TopDirectoryOnly); foreach (string file in files) { Win32LongPathFile.Delete(GetWin32LongPath(file)); } directories = Win32LongPathDirectory.GetDirectories(directory, null, System.IO.SearchOption.TopDirectoryOnly); DeleteDirectoriesRecrusive(directories); bool ok = Win32FileSystem.RemoveDirectory(GetWin32LongPath(directory)); if (!ok) { ThrowWin32Exception(); } } }