using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
namespace DPumpHydr.WinFrmUI.WenSkin.DLL
{
public static class FileFolderHelper
{
#region 目录文件获取类
///
/// 获取及其子目录下全部文件
///
///
///
public static List GetFiles(this string path)
{
List files = new List();
//获得程序所在路径的目录对象
DirectoryInfo dirs = new DirectoryInfo(path);
//获得目录下文件夹对象
foreach (var dir in dirs.GetDirectories())
{
files.AddRange(GetFiles(dir.FullName));
}
//获得目录下文件对象
foreach (var file in dirs.GetFiles())
{
files.Add(file.FullName);
}
return files;
}
///
/// 返回当前目录及子目录的文件列表。
///
///
///
public static List GetFileInfos(this string path)
{
List files = new List();
//获得程序所在路径的目录对象
DirectoryInfo dirs = new DirectoryInfo(path);
//获得目录下文件夹对象
foreach (var dir in dirs.GetDirectories())
{
files.AddRange(GetFileInfos(dir.FullName));
}
//获得目录下文件对象
files.AddRange(dirs.GetFiles());
return files;
}
///
/// 返回当前目录的文件列表。
///
///
///
public static List GetFolderFileInfos(this string path)
{
List files = new List();
//获得程序所在路径的目录对象
DirectoryInfo dirs = new DirectoryInfo(path);
//获得目录下文件对象
files.AddRange(dirs.GetFiles());
return files;
}
///
/// 获取目录下的全部文件不包含子文件夹
///
///
///
public static List GetFolderFiles(this string path)
{
List files = new List();
//获得程序所在路径的目录对象
DirectoryInfo dirs = new DirectoryInfo(path);
//获得目录下文件对象
foreach (var file in dirs.GetFiles())
{
files.Add(file.FullName);
}
return files;
}
#endregion
#region 运行文件类
///
/// 打开指定文件
///
///
public static void FileOpen(this string path)
{
Process pr = new Process();//声明一个进程类对象
pr.StartInfo.FileName = path;
pr.Start();
}
///
/// 打开文件带参数
///
///
///
public static void FileOpen(this string path, string arg)
{
Process pr = new Process();//声明一个进程类对象
pr.StartInfo.FileName = path;
pr.StartInfo.Arguments = arg;
pr.Start();
}
#endregion
#region 文件定位
public static void OpenFolderAndSelectFile(string fileFullName)
{
ProcessStartInfo psi = new ProcessStartInfo("Explorer.exe");
psi.Arguments = "/e,/select," + fileFullName;
Process.Start(psi);
}
#endregion
#region 文件复制类
///
/// 复制整个文件夹到指定文件夹
///
/// 本地文件夹
/// 目标文件夹
public static void DirectoryFileCopy(string dir, string dirCopy)
{
if (!Directory.Exists(dirCopy))
{
Directory.CreateDirectory(dirCopy);
}
//获得程序所在路径的目录对象
DirectoryInfo dirs = new DirectoryInfo(dir);
foreach (var d in dirs.GetDirectories())
{
DirectoryFileCopy(d.FullName, dirCopy + "\\" + d.Name);
}
foreach (var file in dirs.GetFiles())
{
string copyPath = dirCopy + "\\" + file.Name;
file.CopyTo(copyPath, true);
}
}
///
/// 复制集合文件都指定目录,存在替换
///
///
///
public static void DirectoryFileScreenCopy(List files, string dirCopy)
{
foreach (var file in files)
{
string copyPath = dirCopy + "\\" + Path.GetFileName(file);
File.Copy(file, copyPath, true);
}
}
#endregion
#region 筛选文件类
///
/// 筛选满足条件的文件
///
///
///
///
public static List DirectoryFileScreen(List files, string where)
{
return files.FindAll(q => q.Contains(where));
}
#endregion
#region 文件内容操作类
///
/// 读取路径下的文件内容
///
///
///
public static string ReadText(string path)
{
return ReadAllText(path, Encoding.Default);
}
///
/// 读取路径下的文件内容
///
///
///
public static string ReadAllText(string path, Encoding encoding)
{
return File.ReadAllText(path, encoding);
}
///
/// 在指定路径中创建所有目录和子目录,除非它们已经存在。
/// 打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭该文件。
///
///
///
///
public static string FileAppendAllText(string path, string text)
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
File.AppendAllText(path, text);
return File.ReadAllText(path);
}
///
/// 在指定路径中创建所有目录和子目录,除非它们已经存在。
/// 创建一个新文件,向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件
///
///
///
///
public static string FileWriteAllText(string path, string text)
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
File.WriteAllText(path, text);
return text;
}
#endregion
}
}