拷貝檔案及子檔案,最後一個參數排除,哪個不要删除。(其實就是移動的效果)
//拷貝檔案及子檔案
public static void CopyDirectory(string src, string dest, string [] skips)
{
if (string.IsNullOrEmpty(src)) return;
CreateDirectoryIfNotExists(dest);
//拷貝子檔案
foreach (string file in Directory.GetFiles(src))
{
string fileName = Path.GetFileName(file);
bool bSkip = false;
if (skips != null)
{
foreach (string skip in skips)
{
if (fileName.Contains(skip))
{
bSkip = true;
break;
}
}
}
if (bSkip) continue;
try
{
System.IO.File.Copy(file, dest + "\\" + fileName, true);
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
//遞歸拷貝
foreach (string dir in Directory.GetDirectories(src))
{
string[] parts = dir.Split('\\');
string lastDirPart = parts[parts.Length - 1];
CopyDirectory(dir, dest + "\\" + lastDirPart, skips);
}
}
遞歸删除檔案
public static void DeleteDirectory(string src, string[] skips)
{
if (string.IsNullOrEmpty(src)) return;
if (src.Length <= 10)
{
throw new Exception("檔案路徑小,删除請注意");
}
//删除子檔案
foreach (string file in Directory.GetFiles(src))
{
string fileName = Path.GetFileName(file);
bool bSkip = false;
if (skips != null)
{
foreach (string skip in skips)
{
if (fileName.Contains(skip))
{
bSkip = true;
break;
}
}
}
if (bSkip) continue;
try
{
File.Delete(file);
//File.SetAttributes(file, FileAttributes.Normal);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
//遞歸删除
foreach (string dir in Directory.GetDirectories(src))
{
DeleteDirectory(dir, skips);
}
//删除自己
if (skips == null)
{
Directory.Delete(src);
}
}