View Code
/// <summary> /// 复制文件 /// </summary> /// <param name="sources">源路径</param> /// <param name="dest">新路径</param> private void CopyFile(string sources, string dest) { DirectoryInfo dinfo = new DirectoryInfo(sources); //注,这里面传的是路径,并不是文件,所以不能保含带后缀的文件 foreach (FileSystemInfo f in dinfo.GetFileSystemInfos()) { //目标路径destName = 目标文件夹路径 + 原文件夹下的子文件(或文件夹)名字 //Path.Combine(string a ,string b) 为合并两个字符串 String destName = Path.Combine(dest, f.Name); if (f is FileInfo) { //如果是文件就复制 File.Copy(f.FullName, destName, true);//true代表可以覆盖同名文件 } else { //如果是文件夹就创建文件夹然后复制然后递归复制 Directory.CreateDirectory(destName); CopyFile(f.FullName, destName); } } }
View Code
/// <summary> /// 测试 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnTest_Click(object sender, EventArgs e) { string FilePath = @Server.MapPath("~/") + "Template\\Zhuanti\\" + this.txtFolder.Value.Trim(); Directory.CreateDirectory(FilePath); string OldFilePath = Server.MapPath("~/") + "Template\\Zhuanti\\youjia\\"; CopyFile(OldFilePath, FilePath); }
这样就能把文件夹下,如果是文件夹就创建文件夹,然后便利其内容,复制;如果是文件就直接复制到目标文件夹了