In console Application i got one doubt
how to copy one folder content to another folder?and after copying source file should be deleted,please provide solution with sample code
protected void btnCopyDir_Click(object sender, EventArgs e)
{
try
{
System.IO.DirectoryInfo SrcDir = new System.IO.DirectoryInfo(txtsrc.Text);
System.IO.DirectoryInfo DestDir = new System.IO.DirectoryInfo(txtdest.Text);
CopyDir(SrcDir, DestDir);
lblResult.Text = "Directories and Files Copied successfully...!!!";
}
catch (Exception ex)
{
lblResult.Text = ex.Message;
}
}
protected void CopyDir(System.IO.DirectoryInfo src, System.IO.DirectoryInfo dest)
{
if (!dest.Exists)
{
dest.Create();
System.IO.FileInfo[] files = src.GetFiles();
foreach (System.IO.FileInfo file in files)
{
file.CopyTo(System.IO.Path.Combine(dest.FullName, file.Name));
}
System.IO.DirectoryInfo[] dirs = src.GetDirectories();
foreach (System.IO.DirectoryInfo dir in dirs)
{
string destDir = System.IO.Path.Combine(dest.FullName, dir.Name);
CopyDir(dir, new System.IO.DirectoryInfo(destDir));
}
}
else if (dest.Exists)
{
System.IO.FileInfo[] files = src.GetFiles();
foreach (System.IO.FileInfo file in files)
{
string filenamechk=System.IO.Path.Combine(dest.FullName, file.Name);
var exists=System.IO.Directory.GetFiles(dest.FullName).Any(x=> x.Equals(filenamechk,StringComparison.OrdinalIgnoreCase));
if(!exists)
{
file.CopyTo(System.IO.Path.Combine(dest.FullName, file.Name));
}
}
}
}
using System;
using System.IO;
using System.Linq;
namespace DemoConsoleApp
{
class Program
{
static void Main(string[] args)
{
var sourceDirectory = new DirectoryInfo(@"D:\Test1");
var destinationDirectory = new DirectoryInfo(@"D:\Test2");
CopyDirectory(sourceDirectory, destinationDirectory);
}
private static void CopyDirectory(DirectoryInfo sourceDirectory, DirectoryInfo destinationDirectory)
{
if (!destinationDirectory.Exists) destinationDirectory.Create();
var sourceFiles = sourceDirectory.GetFiles();
foreach (var file in sourceFiles)
{
file.CopyTo(Path.Combine(destinationDirectory.FullName, file.Name));
}
var sourceDirectories = sourceDirectory.GetDirectories();
foreach (var sourceDir in sourceDirectories)
{
var destDir = Path.Combine(destinationDirectory.FullName, sourceDir.Name);
CopyDirectory(sourceDir, new DirectoryInfo(destDir));
}
var files = sourceDirectory.GetFiles();
foreach (var f in from file in files let checkFileName = Path.Combine(destinationDirectory.FullName, file.Name) where !Directory.GetFiles(destinationDirectory.FullName).Any(x => x.Equals(checkFileName, StringComparison.OrdinalIgnoreCase)) select file)
{
f.CopyTo(Path.Combine(destinationDirectory.FullName, f.Name));
}
sourceDirectory.Delete(true);
}
}
}