文件移动(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. 洛谷P2672 推销员 题解 贪心

    题目链接:https://www.luogu.org/problem/P2672 这道题目是贪心,贪心的思想是: 选择 \(m\) 户人家的最大疲劳值应该是以下两种方案中的较大值: 方案一:选择 \( ...

  2. java 集合遍历输出方式

    Iterator:迭代输出 一旦操作集合的遍历输出,首选Iterator接口; ListIterator:Iterator子接口,专门输出List中的元素; Enumeration:古老的输出方式,迭 ...

  3. maven 安装 环境变量设置后变成 mvn 并且Cmd Idea创建第一个项目

    1.maven的安装教程 下载地址为:http://maven.apache.org/download.cgi 点击下载,然后解压,我把目录名改为maven,目录结构如下图所示 下面我们配置环境变量 ...

  4. H5 拖拽元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. JavaScript数据类型总结

    1.  六种简单数据类型:Undefined.Null.Boolean.Number.String.Symbol(新增): 一种复杂数据类型:Object: (1)基本数据类型保存在栈内存中,是按值传 ...

  6. 2018-8-10-win10-uwp-MVVM-语义耦合

    title author date CreateTime categories win10 uwp MVVM 语义耦合 lindexi 2018-08-10 19:16:53 +0800 2018-2 ...

  7. yum安装错误:CRITICAL:yum.cli:Config Error: Error accessing file for config file:///home/linux/+

    上网搜了一下然后自己总结一份 : 出现原因:yum可能没有,或者损坏 解决: 第一步:下载   wget  http://yum.baseurl.org/download/3.2/yum-3.2.28 ...

  8. Codeforces 837D 动态规划

    Codeforces 837D 动态规划 传送门:https://codeforces.com/contest/837/problem/D 题意: 给你n个数,问你从这n个数中取出k个数,这k个数的乘 ...

  9. [译] 重新思考 1 号进程 / Rethinking PID 1

    By Lennart Poettering 译 SReadFox 原文链接:http://0pointer.de/blog/projects/systemd.html 译注:笔者大约在 2011 年读 ...

  10. from __future__ import print_function的使用

    1.作用:把下一个新版本的特性导入到当前版本,就可以在当前版本中测试一些新版本的语法特性,例如在python2的环境下加入这一句可以测试python3的输出语法 2.使用方式:置于程序的第一行 3.示 ...