using CommonLib.LOG; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; #pragma warning disable 219 //禁止未用变量警告 #pragma warning disable 168 //禁止未用变量警告 namespace CommonLib.IO { public static class CommonFile { static public string strMtpPath = ".\\mtp\\"; /// /// //获得目录中的所有文件 /// /// /// /// static public List GetAllFilesInDirectory(string strDirectory, string ext = "*.*") { List listFiles = new List(); //保存所有的文件信息 DirectoryInfo directory = new DirectoryInfo(strDirectory); FileInfo[] fileInfoArray = directory.GetFiles(ext); if (fileInfoArray.Length > 0) listFiles.AddRange(fileInfoArray); return listFiles; } /// /// Linq查询文件列表 /// /// /// /// static public List GetAllFilesInDirectory(string strDirectory, string[] extArray) //获得目录中的所有文件 { List listFiles = new List(); //保存所有的文件信息 List listExt = new List(); foreach(var ext in extArray) { listExt.Add(ext.ToLower()); } try { DirectoryInfo directory = new DirectoryInfo(strDirectory); FileInfo[] fileInfoArray1 = directory.GetFiles("*.*"); FileInfo[] fileInfoArray = fileInfoArray1.Where(fileInfo => { Boolean bContain = false; string ext = Path.GetExtension(fileInfo.Extension).ToLower(); bContain = listExt.Contains(ext); return bContain; }).ToArray(); listFiles.AddRange(fileInfoArray); } catch (Exception ex) { MessageBox.Show(ex.Message); } return listFiles; } /// ///复制文件夹 /// /// /// /// /// static public Boolean DirectoryCopy(string srcPath,string DestPath,Boolean bOverWrite = true) { Boolean bResult = false; try { if (!Directory.Exists(srcPath)) { return bResult; } if (!Directory.Exists(DestPath)) { //Directory.CreateDirectory(DestPath); CreateDir(DestPath); } DirectoryInfo srcDirectory = new DirectoryInfo(srcPath); FileInfo[] fileInfoArray = srcDirectory.GetFiles(); DirectoryInfo[] srcDirectInfoArray = srcDirectory.GetDirectories(); foreach (var fileInfo in fileInfoArray) { string srcFilePath = fileInfo.FullName; string dstFilePath = Path.Combine(DestPath, fileInfo.Name); System.IO.File.Copy(srcFilePath, dstFilePath, bOverWrite); } foreach (var DirectInfo in srcDirectInfoArray) { string srcDirPath = DirectInfo.FullName; string dstDirPath = Path.Combine(DestPath, DirectInfo.Name); DirectoryCopy(srcDirPath, dstDirPath, bOverWrite); } bResult = true; } catch(Exception ex) { LogStorage.Logs.Add(LogLevel.Error,ex.ToString()); } return bResult; } public static Boolean TestAndCreateDir(string strDir) { Boolean bResult = true; try { if (strDir == "") strDir = ".\\"; int iPos = 0; ///这个是带网络地址的,判断主机存在否,如果不存在,丢异常出来 if((strDir.Substring(0,2)=="\\\\")&& ((iPos=strDir.IndexOf('\\', 2)) > 0)) { if ((iPos = strDir.IndexOf('\\', iPos+1)) > 0) { string HostName = strDir.Substring(0, iPos); DirectoryInfo HostNameinfo = new DirectoryInfo(HostName); //判断IP??? if (!HostNameinfo.Exists) //没有目录创建目录 { throw new Exception(HostNameinfo + "不存在,请检查连接"); } } } DirectoryInfo dirinfo = new DirectoryInfo(strDir); if (!dirinfo.Exists) //没有目录创建目录 { CommonFile.CreateDir(strDir); } } catch (Exception ex) { bResult = false; throw; } return bResult; } public static string[] LoadXMLRecipeWithFullPathFromModelPath(string ModelPath) { List strRecipes = new List(); try { if (Directory.Exists(strMtpPath + ModelPath)) { List Getpattern = GetAllFilesInDirectory(strMtpPath + ModelPath, "*.XMLRecipe"); foreach (FileInfo files in Getpattern) { string RecipeName = files.FullName ; //这样才不会取错名字 strRecipes.Add(RecipeName); } } } catch (Exception ex) { //MessageBox.Show(ex.Message); LogStorage.Logs.Add(LogLevel.Error, ex.Message + "\n" + ex.StackTrace); } return strRecipes.ToArray(); } /// /// 获得目录中所有的Recipe文件 /// /// /// public static string[] LoadRecipeFromModelPath(string ModelPath) { List strRecipes = new List(); try { if (Directory.Exists(strMtpPath + ModelPath)) { List Getpattern = GetAllFilesInDirectory(strMtpPath + ModelPath, "*.Recipe"); foreach (FileInfo files in Getpattern) { string RecipeName = Path.GetFileNameWithoutExtension(files.FullName); //这样才不会取错名字 strRecipes.Add(RecipeName); } } } catch (Exception ex) { //MessageBox.Show(ex.Message); LogStorage.Logs.Add(LogLevel.Error, ex.Message + "\n" + ex.StackTrace); } return strRecipes.ToArray(); } //删除目录 public static Boolean ForceDeleteDirctory(string Dir) { try { List Allfiles = GetAllFilesInDirectory(Dir, "*.*"); //获得目录中的所有文件 foreach (FileInfo file in Allfiles) { System.IO.File.Delete(file.FullName); } Directory.Delete(Dir); } catch (Exception ex) { MessageBox.Show(ex.Message); throw; } return true; } /// /// 数组比较 /// /// /// /// public static bool ArraysEqual(Array a1, Array a2) { if (a1 == a2) return true; if (a1 == null || a2 == null) return false; if (a1.Length != a2.Length) return false; IList list1 = a1, list2 = a2; //error CS0305: Using the generic type 'System.Collections.Generic.IList' requires '1' type arguments for (int i = 0; i < a1.Length; i++) { if (!Object.Equals(list1[i], list2[i])) //error CS0021: Cannot apply indexing with [] to an expression of type 'IList'(x2) return false; } return true; } public static Boolean CreateDir(string dir) { try { DirectoryInfo di = new DirectoryInfo(dir); if (!di.Exists) { string strCurrentDir = Directory.GetCurrentDirectory(); strCurrentDir.Replace(".", strCurrentDir); //Try to create the directory. di.Create(); Console.WriteLine("The directory was created successfully."); } } catch (Exception ex) { throw; } return true; } } }