using System.IO; using System.Text; namespace CommonLibrary { public static class Extensions { /// 경로를 일관된 포맷으로 변경 /// 경로 리스트들 /// 폴더 구분자가 / 로 일관되게 변경된 경로 public static string PathCombine(params string[] paths) { if (paths == null || paths.Length == 0) return string.Empty; var sb = new StringBuilder(); for (int i = 0; i < paths.Length; i++) { if (string.IsNullOrEmpty(paths[i])) continue; var part = paths[i].Replace("\\", "/").Trim('/'); if (sb.Length > 0) sb.Append('/'); sb.Append(part); } return sb.ToString(); } public static bool IsDefault(ref this T data) where T : struct => default(T).Equals(data); public static void DeepMove(this DirectoryInfo sourceDirectoryInfo, DirectoryInfo targetDirectoryInfo) { if (!sourceDirectoryInfo.Exists) return; if (sourceDirectoryInfo.Root.Name == targetDirectoryInfo.Root.Name) { sourceDirectoryInfo.MoveTo(targetDirectoryInfo.FullName); } else { var fileInfos = sourceDirectoryInfo.GetFiles("*", SearchOption.AllDirectories); foreach (var file in fileInfos) { var targetDirectory = new DirectoryInfo(file.DirectoryName.Replace(sourceDirectoryInfo.FullName, targetDirectoryInfo.FullName)); targetDirectory.Create(); var targetFileName = System.IO.Path.Combine(targetDirectory.FullName, file.Name); file.CopyTo(targetFileName, true); } sourceDirectoryInfo.Delete(true); } } } }