public string[] GetDirectories(string path, string searchPattern = null, System.IO.SearchOption searchOption = SearchOption.TopDirectoryOnly) { if (!IsLongPath(path)) { return(Directory.GetFiles(path, searchPattern)); } else { return(Win32LongPathDirectory.GetDirectories(path, 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(); } } }
public string[] GetDirectories(string path) { string[] setEntries = null; if (path != null) { if (!IsLongPath(path)) { setEntries = Directory.GetDirectories(path); } else { setEntries = Win32LongPathDirectory.GetDirectories(path); } } return(setEntries); }
public static List <string> GetFiles(string path, string searchPattern = "*", System.IO.SearchOption searchOption = System.IO.SearchOption.TopDirectoryOnly) { searchPattern = searchPattern ?? "*"; var files = new List <string>(); var dirs = new List <string> { GetWin32LongPath(path) }; if (searchOption == System.IO.SearchOption.AllDirectories) { //Add all the subpaths dirs.AddRange(Win32LongPathDirectory.GetDirectories(path, null, System.IO.SearchOption.AllDirectories)); } foreach (var dir in dirs) { Win32FileSystem.WIN32_FIND_DATA findData; IntPtr findHandle = Win32FileSystem.FindFirstFile(System.IO.Path.Combine(GetWin32LongPath(dir), searchPattern), out findData); try { if (findHandle != new IntPtr(-1)) { do { if ((findData.dwFileAttributes & System.IO.FileAttributes.Directory) == 0) { string filename = System.IO.Path.Combine(dir, findData.cFileName); files.Add(GetCleanPath(filename)); } } while (Win32FileSystem.FindNextFile(findHandle, out findData)); Win32FileSystem.FindClose(findHandle); } } catch (Exception) { Win32FileSystem.FindClose(findHandle); throw; } } return(files); }