文件移动(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. 第一章 区块链系列 联盟链FISCO BCOS 底层搭建

    想了解相关区块链开发,技术提问,请加QQ群:538327407 FISCO BCOS 基础安装教程:https://fisco-bcos-documentation.readthedocs.io/zh ...

  2. Java语言中的正则表达式

    正则表达式是什么? 正则表达式是一种强大而灵活的文本处理工具.初学正则表达式时,其语法是一个难点,但它确实是一种简洁.动态的语言.正则表达式提供了一种完全通用的方式,能够解决各种字符串处理相关的问题: ...

  3. 2018-8-10-如何在-UWP-使用-wpf-的-Trigger-

    title author date CreateTime categories 如何在 UWP 使用 wpf 的 Trigger lindexi 2018-08-10 19:16:51 +0800 2 ...

  4. H3C DHCP中继配置示例

  5. JavaScript 判断对象中是否有某属性的常用方法

    一.点(.)或方框号([ ]) var obj = { test: '123' } obj.test obj['test'] 二.in 运算符 var obj = { test: '123' } te ...

  6. SpringBoot使用Junit测试 防止事物自动回滚

           问题:我在测试类中的save方法测试成功通过,但数据库没有插入数据 测试方法如下: @Test @Transactional // @Rollback(false) public voi ...

  7. Linux 内核 kobject 初始化

    本书已经展示了许多数据类型, 带有简单的在编译或者运行时初始化机制. 一个 kobject 的初始化有些复杂, 特别当使用它的所有函数时. 不管一个 kobject 如何使用, 但是, 必须进行几个步 ...

  8. dotnet core 使用 PowerShell 脚本

    本文告诉大家如何在 dotnet core 通过 Host PowerShell 的方法使用 PowerShell 脚本 本文提供的方法需要在 dotnet core 2.1 和以上的版本,对于 do ...

  9. C#面试题整理2(不带答案)

    一.C# 理论 1.1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 1.2.简述abstract.sea ...

  10. cisco网络设备IOS升级步骤

    step1:检查和备份================================================================4507R#write4507R#copy run ...