您的位置:首页 > 其它

利用递归寻找某个目录下的指定名称所有文件(方法2)

2018-03-05 11:24 706 查看
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

namespace FindHongliPdf
{
class Program
{
static void Main(string[] args)
{
FindPdf();
}
/// <summary>
/// 寻找匹配名称的pdf
/// </summary>
public static void FindPdf()
{
//复制后存储的路径
string storagePath = @"\\10.10.129.77\巨潮下载测试\2017\20171130\新建文件夹\";
//需要寻找的文件地址
string path = @"C:\Users\qingping.li\Desktop\公司文档";
//文件需要匹配的正则
string pattern = ".*权益.*实施.*|.*分红.*|.*派息.*|.*转增.*|.*利润分.*实施.*|.*红.*分配.*";
GetAllPath(path, storagePath, pattern);
}
public static void GetAllPath(string path, string storagePath, string pattern)
{
DirectoryInfo Info = new DirectoryInfo(path);
DirectoryInfo[] dirInfoArray = Info.GetDirectories();
List<DirectoryInfo> dirList = new List<DirectoryInfo>();
GetDirList(dirInfoArray, dirList);
//遍历所有文件夹信息
foreach (DirectoryInfo item in dirList)
{
CopyFile(item, storagePath, pattern);
}
}
/// <summary>
/// 遍历出所有的文件夹信息
/// </summary>
/// <param name="dirInfoArray">文件夹数组信息</param>
/// <param name="dirList">所有的文件夹信息</param>
public static void GetDirList(DirectoryInfo[] dirInfoArray, List<DirectoryInfo> dirList)
{
foreach (DirectoryInfo item in dirInfoArray)
{
dirList.Add(item);
if (item.GetDirectories().Length > 0)
{
GetDirList(item.GetDirectories(), dirList);
}
}
}
/// <summary>
/// 复制文件
/// </summary>
/// <param name="item"></param>
public static void CopyFile(DirectoryInfo item, string storagePath, string pattern)
{

if (item.GetFiles().Length > 0)
{
foreach (FileInfo file in item.GetFiles())
{
if (file.Extension == ".pdf")
{
//匹配要扫描的文件名称

if (Regex.IsMatch(file.Name, pattern))
if (!File.Exists(storagePath + file.Name))
File.Copy(file.FullName, storagePath + file.Name);
}
Console.WriteLine(file.FullName);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐