namespace MeloongCore; public static class DirectoryUtils { /// /// 创建文件夹,或文件所在的文件夹。 /// 文件夹已存在时不会抛出异常。 /// public static void Create(string path, bool isFilePath = false) { if (isFilePath) path = Path.GetDirectoryName(path); Directory.CreateDirectory(PathUtils.ToLongPath(path)); } /// /// 判断文件夹是否存在。 /// public static bool Exists(string path) => Directory.Exists(PathUtils.ToLongPath(path)); /// /// 创建 对象。 /// public static DirectoryInfo GetInfo(string path) => new(PathUtils.ToLongPath(path)); /// /// 返回指定路径下的所有文件。 /// public static IEnumerable GetFiles(string path, bool topDirectoryOnly = false, string searchPattern = "*") { if (!Exists(path)) return []; return Directory.EnumerateFiles(PathUtils.ToLongPath(path), searchPattern, topDirectoryOnly ? SearchOption.TopDirectoryOnly : SearchOption.AllDirectories); } /// /// 返回指定路径下的所有文件夹,不以分隔符结尾。 /// public static IEnumerable GetDirectories(string path, bool topDirectoryOnly = false, string searchPattern = "*") { if (!Exists(path)) return []; return Directory.EnumerateDirectories(PathUtils.ToLongPath(path), searchPattern, topDirectoryOnly ? SearchOption.TopDirectoryOnly : SearchOption.AllDirectories); } /// /// 该文件夹是否为空。 /// 如果文件夹不存在,也返回 true。 /// public static bool IsEmpty(string path) { if (!Exists(path)) return true; return !Directory.EnumerateFileSystemEntries(PathUtils.ToLongPath(path)).Any(); } /// /// 剪切文件夹。 /// public static void Move(string sourceDirName, string destDirName) { if (!Exists(sourceDirName)) return; Create(destDirName); Directory.Move(PathUtils.ToLongPath(sourceDirName), PathUtils.ToLongPath(destDirName)); } /// /// 删除文件夹。 /// public static void Delete(string dirPath, bool toRecycleBin = false) { dirPath = PathUtils.ToLongPath(dirPath); if (toRecycleBin) { Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(dirPath, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException); } else { Directory.Delete(dirPath); } } }