摘自:http://www.cnblogs.com/zxjay/archive/2008/10/29/1322517.html

FCL提供了文件移动、文件复制、目录移动的方法,但没提供目录复制的方法,可以用递归实现。

注意的地方是需要检查一定不能让父目录拷贝到子目录中,否则程序会一直递归执行下去直到出错!

static
void CopyDirectory(string srcDir,
string tgtDir)


{

    DirectoryInfo source =
new DirectoryInfo(srcDir);


    DirectoryInfo target =
new DirectoryInfo(tgtDir);




    if (target.FullName.StartsWith(source.FullName, StringComparison.CurrentCultureIgnoreCase))


    {

        throw
new Exception("父目录不能拷贝到子目录!");


    }



    if (!source.Exists)


    {

        return;


    }



    if (!target.Exists)


    {

        target.Create();

    }



    FileInfo[] files = source.GetFiles();




    for (int i
=
; i
< files.Length; i++)


    {

        File.Copy(files[i].FullName, target.FullName +
@"\"
+ files[i].Name,
true);


    }



    DirectoryInfo[] dirs = source.GetDirectories();




    for (int j
=
; j
< dirs.Length; j++)


    {

        CopyDirectory(dirs[j].FullName, target.FullName +
@"\"
+ dirs[j].Name);


    }

}

调用这个方法可以实现目录的复制了。

C#实现目录复制的更多相关文章

  1. XCOPY——目录复制命令

    XCOPY——目录复制命令 1.功能:复制指定的目录和目录下的所有文件连同目录结构. 2.类型:外部命令 3.格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E ...

  2. java基础IO流 复制键盘录入的目录,复制其中的.java文件到指定目录,指定目录中有重名,则改名 对加密文件计算字母个数

    package com.swift.jinji; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; im ...

  3. 纯异步nodejs文件夹(目录)复制

    思路: 1.callback 驱动 2.递归所有需要复制文件 3.在一定阀值下并发复制文件 4.运行需要安装 async.js     npm install async 代码如下: var asyn ...

  4. 图片的copy,从一个目录复制到另一个目录

    代码: public function index(){ $path='G:/相片/2014.9.8深圳莲花山/IMG_1282.JPG'; $path=iconv('utf-8','gb2312', ...

  5. C# 实现文件或目录复制到指定目录

    public void CopyFilesToDirKeepSrcDirName(string srcPath, string destDir) { if (Directory.Exists(srcP ...

  6. Unity---在Hierarchy视图中将选中的对象的层级目录复制到剪切板

    using UnityEditor; using UnityEngine; public class ObjPathCopyTool : ScriptableObject { [MenuItem(&q ...

  7. python把文件从一个目录复制到另外一个目录,并且备份

    #!/usr/bin/python # -*- coding: utf-8 -*- import os,sys,md5,datetime,shutil,time,zipfile,chardet # c ...

  8. linux复制指定目录下的全部文件到另一个目录中

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  9. 一个Java复制目录的方法(递归)

    /** * 将目标目录复制为指定目录(也可以用于复制文件) * @param src 源路径 * @param dest 目标路径 * @throws IOException */ public st ...

随机推荐

  1. C#request 请求响应

    /// <summary> /// 提交POST请求 /// </summary> /// <param name="url">提交地址< ...

  2. iOS socket 实现tcp和服务器长链接的简单使用心得

    首先iOS端用了一个第三方的框架 GCDAsyncSocket 当然这个是CocoaAsyncSocket框架里面的一部分 Github下载地址https://github.com/robbiehan ...

  3. js基础例子动态创建table实例

    <style> table{ width:500px; font-weight: bold; border: 1px solid #000; border-collapse:collaps ...

  4. PHP各版本之间差异

    PHP5.3 __toString 魔术方法不再接受参数. 魔术方法 __get, __set, __isset, __unset, and __call 应该总是公共的(public)且不能是静态的 ...

  5. AngularJs学习笔记6——四大特性之依赖注入

    压缩工具:YUI-compressor 为了优化网页功能,对一些脚本文件进行压缩,比如:删除所有的注释和空格等,简化形参.但是AngularJs模块中可以声明多种组件,如控制器.指令.过滤器.服务等. ...

  6. RPC 实现

    PC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Servic ...

  7. CSS背景特殊属性值

    CSS代码示例-背景附着属性(background-attachment)-[背景图固定不动,不跟随滚动条滚动]:<html><head><title>背景附着属性 ...

  8. C#中的switch case

    在C#中switch(type){case tpye1:break;case tpye2:break;case tpye3:break;case tpye4:break;};其中type可以是数字,也 ...

  9. DNN Module - Responsive Html Tabs 3 介绍

    Responsive Html Tabs 模块可以运行于DNN7及以上版本,支持响应式.用户界面较为友好,可以插入自定义的HTML. Demo This is a user-friendly, ful ...

  10. sql练习总结(一)

    最近在学sql,遇到了这么一道题: 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的. 把所能想到的实现方法都做了一遍: 1.用 ...