文件移动(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. H3C 帧中继子接口

  2. Eclipse设置默认编码为UTF-8

    需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...

  3. hdu 1254 推箱子(嵌套搜索,bfs中有dfs)

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  4. 51nod1327 棋盘游戏

    远古大坑 神仙DP状态设计题 https://blog.csdn.net/white_elephant/article/details/83592103 从行的角度入手,无论如何都要状压 每列最多放一 ...

  5. 2018-2-13-C#-通配符转正则

    title author date CreateTime categories C# 通配符转正则 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 ...

  6. linux获知当前时间

    内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代 表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统 的 uptime. 如 ...

  7. RabbitMQ-事务和Confirm消息确认

    ,如果要保证消息的可靠性,需要对消息进行持久化处理,然而消息持久化除了需要代码的设置之外,还有一个重要步骤是至关重要的,那就是保证你的消息顺利进入Broker(代理服务器),如图所示: 正常情况下,如 ...

  8. Mockito -- 入门篇

    Mockito是一种mock工具/框架.我理解EasyMock有点过时了,Mockito是现在比较流行的. 什么是mock?说的直白一点,大家都知道unit test应该是尽可能独立的.对一个clas ...

  9. H3C系统调试的操作

  10. 2018-8-10-win10-uwp-获得缩略图

    title author date CreateTime categories win10 uwp 获得缩略图 lindexi 2018-08-10 19:16:51 +0800 2018-2-13 ...