文件移动(Move)操作和文件的复制(Copy)是C#程式开发经常遇到的方法,根据传入的源文件地址和目标文件地址参数,实现对文件的操作。实现代码如下:

  1. Move操作代码:

    public static void MoveFolder(string sourcePath, string destPath)
    {
    if (Directory.Exists(sourcePath))
    {
    if (!Directory.Exists(destPath))
    {
    //目标目录不存在则创建
    try
    {
    Directory.CreateDirectory(destPath);
    }
    catch (Exception ex)
    {
    throw new Exception("创建目标目录失败:" + ex.Message);
    }
    }
    //获得源文件下所有文件
    List<string> files = new List<string>(Directory.GetFiles(sourcePath));
    files.ForEach(c =>
    {
    string destFile = Path.Combine(new string[] { destPath, Path.GetFileName(c) });
    //覆盖模式
    if (File.Exists(destFile))
    {
    File.Delete(destFile);
    }
    File.Move(c, destFile);
    });
    //获得源文件下所有目录文件
    List<string> folders = new List<string>(Directory.GetDirectories(sourcePath)); folders.ForEach(c =>
    {
    string destDir = Path.Combine(new string[] { destPath, Path.GetFileName(c) });
    //Directory.Move必须要在同一个根目录下移动才有效,不能在不同卷中移动。
    //Directory.Move(c, destDir); //采用递归的方法实现
    MoveFolder(c, destDir);
    });
    }
    else
    {

    Move

  2. Copy操作代码:
    public static void CopyFilefolder(string sourceFilePath, string targetFilePath)
    {
    //获取源文件夹中的所有非目录文件
    string[] files = Directory.GetFiles(sourceFilePath);
    string fileName;
    string destFile;
    //如果目标文件夹不存在,则新建目标文件夹
    if (!Directory.Exists(targetFilePath))
    {
    Directory.CreateDirectory(targetFilePath);
    }
    //将获取到的文件一个一个拷贝到目标文件夹中
    foreach (string s in files)
    {
    fileName = Path.GetFileName(s);
    destFile = Path.Combine(targetFilePath, fileName);
    File.Copy(s, destFile, true);
    }
    //上面一段在MSDN上可以看到源码 //获取并存储源文件夹中的文件夹名
    string[] filefolders = Directory.GetFiles(sourceFilePath);
    //创建Directoryinfo实例
    DirectoryInfo dirinfo = new DirectoryInfo(sourceFilePath);
    //获取得源文件夹下的所有子文件夹名
    DirectoryInfo[] subFileFolder = dirinfo.GetDirectories();
    for (int j = ; j < subFileFolder.Length; j++)
    {
    //获取所有子文件夹名
    string subSourcePath = sourceFilePath + "\\" + subFileFolder[j].ToString();
    string subTargetPath = targetFilePath + "\\" + subFileFolder[j].ToString();
    //把得到的子文件夹当成新的源文件夹,递归调用CopyFilefolder
    CopyFilefolder(subSourcePath, subTargetPath);
    }
    }

    Copy

C#实现文件Move操作和文件的Copy操作的更多相关文章

  1. .net对文件的操作之对文件目录的操作

    .NET 提供一个静态File类用于文件的操作,下面列出它的主要操作方法. 返回值类型 方法名称 说明 bool Exists(string path) 用于检查指定文件是否存在 void Copy( ...

  2. JavaScript中ActiveXObject操作本地文件夹

    在Windows平台上, js可以调用很多Windows提供的ActivexObject,本文就使用js来实现文档处理, 和使用js编写ActiveX做一个简单介绍. <!DOCTYPE HTM ...

  3. JavaScript中使用ActiveXObject操作本地文件夹的方法

    转载地址    http://www.jb51.net/article/48538.htm 在Windows平台上, js可以调用很多Windows提供的ActivexObject,本文就使用js来实 ...

  4. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  5. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  6. 文件IO操作..修改文件的只读属性

    文件的IO操作..很多同行的IO工具类都是直接写..但是如果文件有只读属性的话..则会写入失败..所以附加了一个只读的判断和修改.. 代码如下: /// <summary> /// 创建文 ...

  7. C++ 操作XML文件 使用MSXML.DLL

    使用MSXML.DLL读写XML; 文件顶部加入 #import "msxml3.dll"; using namespace MSXML2; //这两句作用是,在程序的文件夹下生成 ...

  8. php多线程操作同一文件-待续

    同意文件操作同意文件的问题在于逻辑有些地方不合适,如果多个线程同时写入,在不加锁的情况下,可能导致得到结果不如意,为了安全,和脏读(数据库的词),应该使用排他锁,这就意味着每次只能被一个线程操作.其他 ...

  9. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

随机推荐

  1. Flex AIR Mobile应用性能解决方案

    这个flex  mobile开发,一般原生开发也许是最合适的方式,但是涉及到跨平台的问题,有精力的团队一般都会逐个基于移动操作系统进行开发.但是如果追求短小,精悍,快速,希望能够跨平台,基于html5 ...

  2. ssh使用笔记

    在集群管理和配置中有很多命令要在各个节点中发送(特别是Master->Worker),大家都不希望发送每一个命令时都输入一次密码,因此常常先配置实现Master无密码登录到所有的Worker节点 ...

  3. java 打印流

    (只有两个,PrintWriter和PrintStream) 思考:如果现在要想完成一个字符串或者是boolean型或者是字符型的数据输出使用OutputStream是否方便? 肯定是不方便的,因为O ...

  4. 51nod 挑剔的美食家

    挑剔的美食家    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一 ...

  5. Github上的英文解释

    1.AFAIK: As far as I know.  据我所知 2.SPOF: Single point of failure. 单节点崩溃 3.ASAP: As soon as possible. ...

  6. HDU 6623 Minimal Power of Prime(数学)

    传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历 ...

  7. 它来了,它来了,centos 8 的时代到来了

    简介 Centos 8 已经在2019年9月24日正式发布.由于这是从Red Hat Enterprise Linux(RHEL)派生的Linux发行版,因此CentOS团队必须构建基础结构来支持新引 ...

  8. [梁山好汉说IT] 如何理解脑裂问题

    [梁山好汉说IT] 如何理解脑裂问题 这个系列是通过梁山好汉的例子来阐述一些IT概念. 1. 问题描述 Split-brain, 就是在集群环境中,因为异常情况发生后,产生两个子集群.每个子集群都选出 ...

  9. 构建锁与同步组件的基石AQS:深入AQS的实现原理与源码分析

    Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如ReentrangLock.Semaphore,它们的实现都用到了一个共同的基类--AbstractQueuedS ...

  10. SQL Server 中数据查询注意事项

    1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...