- Bug Fix

DeepMove Bug Fix
This commit is contained in:
2023-05-14 20:30:18 +09:00
parent 5f0ee1e4b9
commit fb66ad3e6f

View File

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