- 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)
{
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<T>(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)
{
targetDirectory.Create();
}
}
var fileInfos = sourceDirectoryInfo.GetFiles("*", SearchOption.AllDirectories);
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);
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);
}
}
}
}