
/// <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); } } }

/// <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); }
這樣就能把文件夾下,如果是文件夾就創建文件夾,然后便利其內容,復制;如果是文件就直接復制到目標文件夾了