62,075
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace F.Framework.WEB.Util
{
public static class DirectoryTools
{
public static void CreateDirectory(this string dirPath)
{
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
}
public enum CopyType
{
File,
Directory
}
/// <summary>
/// 将fromDir文件夹下的所有文件及文件夹Copy至toDir下
/// </summary>
/// <param name="fromDir">来源(物理路径)</param>
/// <param name="toDir">目的地(物理路径)</param>
/// <param name="copyType">要复制的类型(注意:可以指定只复制文件夹结构,但指定复制文件则必定复制文件夹结构)</param>
/// <param name="noNeedCopyRules">不需要复制的规则(名字正则)</param>
/// <param name="isNoNeedCopy">是否存在不需要复制的文件或文件夹,true为不需要复制</param>
public static void Copy(string fromDir, string toDir, CopyType copyType, string noNeedCopyRules,bool isNoNeedCopy)
{
if (Directory.Exists(fromDir))
{
string[] childDir = Directory.GetDirectories(fromDir);
if (childDir != null && childDir.Length > 0)
{
foreach (string tS in childDir)
{
if (isNoNeedCopy && System.Text.RegularExpressions.Regex.IsMatch(tS, noNeedCopyRules))
{
continue;
}
Copy(tS, toDir + tS.Substring(fromDir.Length), copyType, noNeedCopyRules, isNoNeedCopy);
}
}
else
{
toDir.CreateDirectory();
}
if (copyType == CopyType.File)
{
string[] fi = Directory.GetFiles(fromDir);
if (fi != null && fi.Length > 0)
{
foreach (string f in fi)
{
if (isNoNeedCopy && System.Text.RegularExpressions.Regex.IsMatch(f, noNeedCopyRules))
{
continue;
}
string toFilePath = toDir + f.Substring(fromDir.Length);
if (File.Exists(toFilePath))
{
File.Delete(toFilePath);
}
File.Copy(f, toFilePath);
}
}
}
}
}
}
}