ASP.NET C#复制目录与SubDirectories与System.IO

编程入门 行业动态 更新时间:2024-10-24 05:19:52
本文介绍了ASP.NET C#复制目录与SubDirectories与System.IO的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我需要将整个目录C:\X复制到C:\Y \X,我还需要复制子文件夹。 有任何方法使用System.IO.File \Directory命名空间吗? 感谢所有帮助者!

I need to copy a whole directory C:\X to C:\Y\X, and I need the sub-folders to be copied as well. Is there any way to do it with the System.IO.File\Directory namespaces ? Thanks for all helpers!

推荐答案

此类将复制或移动文件夹,而不进行递归调用。 方法使用自己的堆栈处理递归,这是为了避免 StackOverflowException 。

This class will copy or move a folder, without recursive calls. The methods is using their own stacks to handle recursion, this is to avoid StackOverflowException.

public static class CopyFolder { public static void CopyDirectory(string source, string target) { var stack = new Stack<Folders>(); stack.Push(new Folders(source, target)); while (stack.Count > 0) { var folders = stack.Pop(); Directory.CreateDirectory(folders.Target); foreach (var file in Directory.GetFiles(folders.Source, "*.*")) { string targetFile = Path.Combine(folders.Target, Path.GetFileName(file)); if (File.Exists(targetFile)) File.Delete(targetFile); File.Copy(file, targetFile); } foreach (var folder in Directory.GetDirectories(folders.Source)) { stack.Push(new Folders(folder, Path.Combine(folders.Target, Path.GetFileName(folder)))); } } } public static void MoveDirectory(string source, string target) { var stack = new Stack<Folders>(); stack.Push(new Folders(source, target)); while (stack.Count > 0) { var folders = stack.Pop(); Directory.CreateDirectory(folders.Target); foreach (var file in Directory.GetFiles(folders.Source, "*.*")) { string targetFile = Path.Combine(folders.Target, Path.GetFileName(file)); if (File.Exists(targetFile)) File.Delete(targetFile); File.Move(file, targetFile); } foreach (var folder in Directory.GetDirectories(folders.Source)) { stack.Push(new Folders(folder, Path.Combine(folders.Target, Path.GetFileName(folder)))); } } Directory.Delete(source, true); } public class Folders { public string Source { get; private set; } public string Target { get; private set; } public Folders(string source, string target) { Source = source; Target = target; } } }

更多推荐

ASP.NET C#复制目录与SubDirectories与System.IO

本文发布于:2023-11-09 22:57:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1573665.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:目录   NET   ASP   IO   System

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!