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 } }