- Bug Fix
DeepMove Bug Fix
This commit is contained in:
@@ -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)
|
|
||||||
|
foreach (var file in fileInfos)
|
||||||
{
|
{
|
||||||
|
var targetDirectory = new DirectoryInfo(file.DirectoryName.Replace(sourceDirectoryInfo.FullName, targetDirectoryInfo.FullName));
|
||||||
targetDirectory.Create();
|
targetDirectory.Create();
|
||||||
|
var targetFileName = System.IO.Path.Combine(targetDirectory.FullName, file.Name);
|
||||||
|
|
||||||
|
file.CopyTo(targetFileName, true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var file in fileInfos)
|
sourceDirectoryInfo.Delete(true);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user