- Add Sign, BugFix
Directory DeepMove
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace CommonLibrary
|
||||
{
|
||||
@@ -57,5 +58,40 @@ namespace CommonLibrary
|
||||
{
|
||||
return default(T).Equals(data);
|
||||
}
|
||||
|
||||
public static void DeepMove(this DirectoryInfo sourceDirectoryInfo, DirectoryInfo targetDirectoryInfo)
|
||||
{
|
||||
if (!sourceDirectoryInfo.Exists)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (sourceDirectoryInfo.Root == targetDirectoryInfo.Root)
|
||||
{
|
||||
sourceDirectoryInfo.MoveTo(targetDirectoryInfo.FullName);
|
||||
return;
|
||||
}
|
||||
|
||||
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));
|
||||
if (!targetDirectory.Exists)
|
||||
{
|
||||
targetDirectory.Create();
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user