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