diff --git a/CommonLibrary/Extensions.cs b/CommonLibrary/Extensions.cs index ae09064..baf872b 100644 --- a/CommonLibrary/Extensions.cs +++ b/CommonLibrary/Extensions.cs @@ -7,25 +7,23 @@ namespace CommonLibrary { public static string PathCombineL(params string[] paths) { - string directorySeparatorChar = System.IO.Path.AltDirectorySeparatorChar.ToString(); + var directorySeparatorChar = System.IO.Path.AltDirectorySeparatorChar.ToString(); return PathCombine(directorySeparatorChar, paths).Replace("\\", "/"); } public static string PathCombineW(params string[] paths) { - string directorySeparatorChar = System.IO.Path.DirectorySeparatorChar.ToString(); + var directorySeparatorChar = System.IO.Path.DirectorySeparatorChar.ToString(); return PathCombine(directorySeparatorChar, paths).Replace("/", "\\"); } - private static string PathCombine(string directorySeparator, params string[] paths) + static string PathCombine(string directorySeparator, params string[] paths) { - if (paths.Length == 0) - { - return string.Empty; - } + if (paths.Length == 0) return string.Empty; - StringBuilder path = new StringBuilder(); + var path = new StringBuilder(); path.Append(paths[0]); + for (int i = 1; i < paths.Length; i++) { if (path.ToString().Substring(path.Length - 1, 1) == directorySeparator) @@ -52,46 +50,36 @@ namespace CommonLibrary } } } + return path.ToString(); } + public static bool IsDefault(ref this T data) where T : struct - { - return default(T).Equals(data); - } +=> default(T).Equals(data); public static void DeepMove(this DirectoryInfo sourceDirectoryInfo, DirectoryInfo targetDirectoryInfo) { - if (!sourceDirectoryInfo.Exists) - { - return; - } + if (!sourceDirectoryInfo.Exists) return; - if (sourceDirectoryInfo.Root == targetDirectoryInfo.Root) + if (sourceDirectoryInfo.Root.Name == targetDirectoryInfo.Root.Name) { sourceDirectoryInfo.MoveTo(targetDirectoryInfo.FullName); - return; } - - DirectoryInfo[] directoryInfos = sourceDirectoryInfo.GetDirectories("*", SearchOption.AllDirectories); - FileInfo[] fileInfos = sourceDirectoryInfo.GetFiles("*", SearchOption.AllDirectories); - - foreach (var directoryInfo in directoryInfos) + else { - DirectoryInfo targetDirectory = new DirectoryInfo(directoryInfo.FullName.Replace(sourceDirectoryInfo.FullName, targetDirectoryInfo.FullName)); - if (!targetDirectory.Exists) + 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); } - } - foreach (var file in fileInfos) - { - DirectoryInfo targetDirectory = new DirectoryInfo(file.DirectoryName.Replace(sourceDirectoryInfo.FullName, targetDirectoryInfo.FullName)); - string targetFileName = System.IO.Path.Combine(targetDirectory.FullName, file.Name); - - file.CopyTo(targetFileName, true); + sourceDirectoryInfo.Delete(true); } - sourceDirectoryInfo.Delete(true); } } } \ No newline at end of file