/// <summary>
/// 返回指定目录下的所有文件信息
/// </summary>
/// <param name="strDirectory"></param>
/// <returns></returns>
public List<FileInfo> GetAllFilesInDirectory(string strDirectory)
{
List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息
DirectoryInfo directory = new DirectoryInfo(strDirectory);
DirectoryInfo[] directoryArray = directory.GetDirectories();
FileInfo[] fileInfoArray = directory.GetFiles();
if (fileInfoArray.Length > 0) listFiles.AddRange(fileInfoArray);
foreach (DirectoryInfo _directoryInfo in directoryArray)
{
DirectoryInfo directoryA = new DirectoryInfo(_directoryInfo.FullName);
DirectoryInfo[] directoryArrayA = directoryA.GetDirectories();
FileInfo[] fileInfoArrayA = directoryA.GetFiles();
if (fileInfoArrayA.Length > 0) listFiles.AddRange(fileInfoArrayA);
GetAllFilesInDirectory(_directoryInfo.FullName);//递归遍历
}
return listFiles;
}

  

/// <summary>
/// 从一个目录将其内容移动到另一目录
/// </summary>
/// <param name="directorySource">源目录</param>
/// <param name="directoryTarget">目标目录</param>
private void MoveFolderTo(string directorySource, string directoryTarget)
{
//检查是否存在目的目录
if (!Directory.Exists(directoryTarget))
{
Directory.CreateDirectory(directoryTarget);
}
//先来移动文件
DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);
FileInfo[] files = directoryInfo.GetFiles();
//移动所有文件
foreach (FileInfo file in files)
{
//如果自身文件在运行,不能直接覆盖,需要重命名之后再移动
if (File.Exists(Path.Combine(directoryTarget, file.Name)))
{
if (File.Exists(Path.Combine(directoryTarget, file.Name + ".bak")))
{
File.Delete(Path.Combine(directoryTarget, file.Name + ".bak"));
}
File.Move(Path.Combine(directoryTarget, file.Name), Path.Combine(directoryTarget, file.Name + ".bak")); }
file.MoveTo(Path.Combine(directoryTarget, file.Name)); }
//最后移动目录
DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();
foreach (DirectoryInfo dir in directoryInfoArray)
{
MoveFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));
}
}

  

/// <summary>
/// 从一个目录将其内容复制到另一目录
/// </summary>
/// <param name="directorySource">源目录</param>
/// <param name="directoryTarget">目标目录</param>
static void CopyFolderTo(string directorySource, string directoryTarget)
{
//检查是否存在目的目录
if (!Directory.Exists(directoryTarget))
{
Directory.CreateDirectory(directoryTarget);
}
//先来复制文件
DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);
FileInfo[] files = directoryInfo.GetFiles();
//复制所有文件
foreach (FileInfo file in files)
{
file.CopyTo(Path.Combine(directoryTarget, file.Name));
}
//最后复制目录
DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();
foreach (DirectoryInfo dir in directoryInfoArray)
{
CopyFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));
}
}

  

C# 获取指定目录下所有文件信息、移动目录、拷贝目录的更多相关文章

  1. [转]C# 获取指定目录下所有文件信息、移动目录、拷贝目录

    原文:http://blog.csdn.net/vchao13/article/details/6200255 1.获取指定目录下所有文件信息 /// <summary> /// 返回指定 ...

  2. C# 获取指定目录下所有文件信息

    /// <summary> /// 返回指定目录下所有文件信息 /// </summary> /// <param name="strDirectory&quo ...

  3. Python获取指定路径下所有文件的绝对路径

    需求 给出制定目录(路径),获取该目录下所有文件的绝对路径: 实现 方式一: import os def get_file_path_by_name(file_dir): ''' 获取指定路径下所有文 ...

  4. java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)

    欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...

  5. Azure Powershell获取指定订阅下的虚拟机信息(ARM)

    为方便Azure用户导出已创建虚拟机的相关信息,特编写如下脚本: 详情脚本: # 登陆Azure Account Add-AzureRmAccount -EnvironmentName AzureCh ...

  6. Azure Powershell获取指定订阅下的虚拟机信息(ASM)

    为方便Azure用户导出已创建虚拟机的相关信息,特编写如下脚本: 详情脚本: # 登陆Azure Account Add-AzureAccount -Environment AzureChinaClo ...

  7. location 将跟目录下某个文件夹指向2级目录

    例如: /caffespressos/指向/web01/caffe/ [root@web01 default]# tree web01/ web01/ └── caffe └── index.html ...

  8. (实用篇)PHP不用递归遍历目录下所有文件的代码

    <?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ fu ...

  9. PHP 获取指定目录下所有文件(包含子目录)

    PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...

随机推荐

  1. 总结-EL表达式

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ tagl ...

  2. 后台系统组件:一丶bootstrap table

    http://www.cnblogs.com/landeanfen/p/4976838.html (bootstrap table) http://www.cnblogs.com/landeanfen ...

  3. js 相关知识整理(一)

    真正声明变量,是用逗号隔开的 EcM5:严格模式“use strict” java与js 语言的区别: 1.弱类型语言 1.声明变量时不需要提前指定数据类型 2.同一个变量可先后保存不同类型的数据 3 ...

  4. http协议中用于上传多个文件的 multipart 字段

    大家好,我是许飞,微软拼音的开发实习生.在网络编程中,经常用到从服务器上“下载”一些数据,有时却要向服务器“上传”数据.曾在一个原型中使用了“multipart/form-data”格式向Web服务器 ...

  5. 创建WordPress管理员账号

    如果你提供WordPress建站和维护服务,同时要维护很多客户的网站,就免不了要在客户的网站注册自己的管理员账号,每次都要操作是不是很麻烦呢?其实你可以添加下面的代码到客户所用的主题的 functio ...

  6. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

  7. web前端程序员真的值这么多钱吗?

    对于互联网公司来说用户就是上帝,做好客户体验一切才有可能.所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用. 前端工程师工资也越来越高,目前Web前端工程师工作1~2年后通常会 ...

  8. 设计一个程序,程序中有三个类,Triangle,Lader,Circle。

    //此程序写出三个类,triangle,lader,circle:其中triangle类具有类型为double的a,b,c边以及周长,面积属性, //具有周长,面积以及修改三边的功能,还有判断能否构成 ...

  9. @overrive报错解决方案

    有时将项目移到另一个环境里出现@overrive报错的情况,可以看看eclipse工具的编译设置,将编译版本设置高点.

  10. linux上监控tomcat down掉后自动重启tomcat

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...