71 lines
2.3 KiB
C#
71 lines
2.3 KiB
C#
using LightSetupBase;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LightSetupMd5
|
|
{
|
|
internal class Md5FileFIlter
|
|
{
|
|
public List<FileInfo> GetFiles(Md5MainArgs arg, Md5Config config)
|
|
{
|
|
// 获取所有的文件信息
|
|
List<FileInfo> fileInfo = new List<FileInfo>();
|
|
string[] filter = config.Filter.Split("\n");
|
|
string[] contain = config.Contain.Split("\n");
|
|
|
|
addFileInfo(fileInfo, arg, config, filter, contain, new DirectoryInfo(arg.RunPath));
|
|
return fileInfo;
|
|
}
|
|
|
|
private void addFileInfo(List<FileInfo> fileInfo, Md5MainArgs arg, Md5Config config,
|
|
string[] filter, string[] contain, DirectoryInfo directoryInfo)
|
|
{
|
|
FileInfo[] fileInfos = directoryInfo.GetFiles();
|
|
foreach (FileInfo file in fileInfos)
|
|
{
|
|
if (fileFilter(arg, filter, contain, file))
|
|
{
|
|
fileInfo.Add(file);
|
|
}
|
|
}
|
|
DirectoryInfo[] directoryInfos = directoryInfo.GetDirectories();
|
|
foreach (DirectoryInfo dic in directoryInfos)
|
|
{
|
|
addFileInfo(fileInfo, arg, config, filter, contain, dic);
|
|
}
|
|
}
|
|
|
|
private bool fileFilter(Md5MainArgs arg, string[] filter, string[] contain, FileInfo file)
|
|
{
|
|
if (arg.ConfigPath == file.FullName)
|
|
{
|
|
return false;
|
|
}
|
|
string absoluteFile = file.FullName.Substring(arg.RunPath.Length);
|
|
bool b = false;
|
|
foreach (string item in contain)
|
|
{
|
|
bool isMatch = absoluteFile.Contains(item) || Regex.IsMatch(absoluteFile, item);
|
|
if (isMatch)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
foreach (string item in filter)
|
|
{
|
|
bool isMatch = absoluteFile.Contains(item) || Regex.IsMatch(absoluteFile, item);
|
|
if (isMatch)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|