/// <summary> 拷贝文件夹 </summary>
        /// <param name="srcdir"> 老文件夹 </param>
        /// <param name="desdir"> 新文件夹 </param>
        /// <param name="isCreateFolder"> 是否新建文件夹 </param>
        public static void CopyDirectory(this IGroupPathString srcdir, string desdir, bool isCreateFolder)
        {
            string folderName = srcdir.Value.Substring(srcdir.Value.LastIndexOf("\\") + 1);

            string desfolderdir = isCreateFolder ? desdir + "\\" + folderName : desdir;

            if (desdir.LastIndexOf("\\") == (desdir.Length - 1))
            {
                desfolderdir = desdir + folderName;
            }
            string[] filenames = Directory.GetFileSystemEntries(srcdir.Value);

            foreach (string file in filenames) // 遍历所有的文件和目录
            {
                if (Directory.Exists(file))    // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
                {
                    string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);
                    if (!Directory.Exists(currentdir))
                    {
                        Directory.CreateDirectory(currentdir);
                    }

                    CopyDirectory(file.As <IGroupPathString>(), desfolderdir, isCreateFolder);
                }

                else // 否则直接copy文件
                {
                    string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);

                    srcfileName = desfolderdir + "\\" + srcfileName;


                    if (!Directory.Exists(desfolderdir))
                    {
                        Directory.CreateDirectory(desfolderdir);
                    }
                    if (File.Exists(srcfileName))
                    {
                        File.Delete(srcfileName);
                    }
                    FileInfo pFile   = new FileInfo(file);
                    FileInfo fileNew = pFile.CopyTo(srcfileName, true);
                    fileNew.IsReadOnly = false;

                    //File.Copy(file, srcfileName);
                }
            }
        }
 /// <summary> 获取指示指定的路径字符串是否包含根的值 </summary>
 public static bool IsPathRooted(this IGroupPathString path)
 {
     return(Path.IsPathRooted(path.Value));
 }
        /// <summary> 文件名扩展 3T1_100 </summary>
        /// <param name="fileName">3T1_100</param>
        /// <param name="code">'-'</param>
        /// <param name="index">"MAT"</param>
        /// <returns>3T1_100-MAT</returns>
        public static string ExFileName(this IGroupPathString fileName, string code, string index)
        {
            string start = fileName.Value.Split(new string[] { code }, StringSplitOptions.RemoveEmptyEntries)[0];

            return(start + code + index);
        }
 /// <summary> 获取指定路径的根目录信息 </summary>
 public static string GetPathRoot(this IGroupPathString path)
 {
     return(Path.GetPathRoot(path.Value));
 }
 /// <summary> 确定路径是否包括文件扩展名 </summary>
 public static bool HasExtension(this IGroupPathString path)
 {
     return(Path.HasExtension(path.Value));
 }
 /// <summary> 返回不具有扩展名的指定路径字符串的文件名 </summary>
 public static string GetFileNameWithoutExtension(this IGroupPathString path)
 {
     return(Path.GetFileNameWithoutExtension(path.Value));
 }
 /// <summary> 返回指定路径字符串的绝对路径 </summary>
 public static string GetFullPath(this IGroupPathString path)
 {
     return(Path.GetFullPath(path.Value));
 }
 /// <summary>  返回指定路径字符串的文件名和扩展名 </summary>
 public static string GetFileName(this IGroupPathString path)
 {
     return(Path.GetFileName(path.Value));
 }
 /// <summary> 返回指定路径字符串的目录信息 </summary>
 public static string GetDirectoryName(this IGroupPathString path)
 {
     return(Path.GetDirectoryName(path.Value));
 }
 /// <summary> 文件夹+文件 文件夹结尾带不带\\都可以 文件是不是全路径都行 </summary>
 public static string AppendFile(this IGroupPathString dic, string fileName)
 {
     return(dic.Value.EndsWith("\\")
         ? dic + Path.GetFileName(fileName)
         : dic + "\\" + Path.GetFileName(fileName));
 }
 /// <summary> 根据文件路径获取文件 C:\WorkArea\1\3T1-Mat.data </summary>
 /// <param name="path"> 参考文件 C:\WorkArea\1\3T1.data  </param>
 /// <returns>新文件全路径 C:\WorkArea\5\3T1-Mat.data</returns>
 public static string GetFileFullPath(this IGroupPathString path, string fileName)
 {
     return(Path.GetDirectoryName(path.Value) + "\\" + Path.GetFileName(fileName));
 }
 /// <summary> 更改路径字符串的扩展名 </summary>
 public static string ChangeExtension(this IGroupPathString path, string extension)
 {
     return(Path.ChangeExtension(path.Value, extension));
 }