using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Y.Utils.BaseUtils;
namespace Y.Utils.FileUtils
{
public class FileTool
{
///
/// 获取文件(单层目录)
///
/// 路径
/// 通配符
///
public static List GetFile(string path, string pattern = "*")
{
if (Directory.Exists(path))
try
{
List result = Directory.EnumerateFiles(path, pattern).ToList();
return result;
}
catch (Exception e) { }
return null;
}
///
/// 获取文件(所有目录)
///
/// 路径
/// 通配符
///
public static List GetAllFile(string path, string pattern = "*")
{
List result = null;
try
{
result = Directory.EnumerateFiles(path, pattern, SearchOption.AllDirectories).ToList();
}
catch (Exception e) { }
return result;
}
///
/// 获取文件(所有目录)
///
/// 路径
/// 通配符(支持多个通配符)
///
public static List GetAllFile(string path, string[] pattern)
{
List result = new List();
if (!ListTool.IsNullOrEmpty(pattern))
{
foreach (var p in pattern)
{
List temp = GetAllFile(path, p);
if (!ListTool.IsNullOrEmpty(temp)) result.AddRange(temp);
}
}
return result;
}
///
/// 获取文件(所有目录)
///
/// 路径(支持多个路径)
/// 通配符(支持多个通配符)
///
public static List GetAllFile(string[] paths, string[] patterns)
{
List result = new List();
if (!ListTool.IsNullOrEmpty(paths))
{
foreach (var path in paths)
{
if (!ListTool.IsNullOrEmpty(patterns))
{
foreach (var pattern in patterns)
{
List temp = GetAllFile(path, pattern);
if (!ListTool.IsNullOrEmpty(temp)) result.AddRange(temp);
}
}
else
{
List temp = GetAllFile(path);
if (!ListTool.IsNullOrEmpty(temp)) result.AddRange(temp);
}
}
}
return result;
}
///
/// 获取文件(所有目录)(严格模式:从第一个.开始截取后缀)
///
/// 路径(支持多个路径)
/// 通配符(支持多个通配符)
///
public static List GetAllFileByExt(string[] paths, string[] patterns)
{
List result = new List();
if (!ListTool.IsNullOrEmpty(paths))
{
foreach (var path in paths)
{
List temp = GetAllFile(path);
if (!ListTool.IsNullOrEmpty(temp)) result.AddRange(temp);
}
}
if (!ListTool.IsNullOrEmpty(patterns) && !ListTool.IsNullOrEmpty(result))
{
for (int i = result.Count() - 1; i >= 0; i--)
{
string ext = Path.GetFileName(result[i]);
if (ext.IndexOf('.') >= 0)
{
ext = ext.Substring(ext.IndexOf('.'));
}
if (!patterns.Contains(ext)) result.RemoveAt(i);
}
}
return result;
}
///
/// 删除文件
///
/// 文件路径
///
public static bool Delete(string file)
{
try
{
if (File.Exists(file))
{
File.Delete(file);
return true;
}
else
{
return true;
}
}
catch { }
return false;
}
///
/// 删除文件(多个)
///
/// 文件路径(支持多个文件路径)
///
public static bool Delete(string[] files)
{
bool result = true;
if (!ListTool.IsNullOrEmpty(files))
{
foreach (var file in files)
{
result = result || Delete(file);
}
}
return result;
}
}
}