using System.IO; using System.Security.Cryptography; using System.Text; namespace Mitria_Minecraft_Updater { public static class Extensions { public static void DirectoryCheckCrate(string path) { if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } } public static void DeleteEmptyDirectory(string path) { if (!System.IO.Directory.Exists(path)) { return; } string[] directorys = System.IO.Directory.GetDirectories(path, "*", System.IO.SearchOption.AllDirectories); for (int i = directorys.Length; i > 0; i--) { int countDirectory = System.IO.Directory.GetDirectories(directorys[i - 1], "*", System.IO.SearchOption.AllDirectories).Length; int countFiles = System.IO.Directory.GetFiles(directorys[i - 1], "*", System.IO.SearchOption.AllDirectories).Length; if (countDirectory + countFiles == 0) { System.IO.Directory.Delete(directorys[i - 1],true); } } } public static string[] GetDirectoriesRelativePath(string path, string searchPattern, System.IO.SearchOption searchOption) { string[] directories = System.IO.Directory.GetDirectories(path, searchPattern, searchOption); for (int i = 0; i < directories.Length; i++) { directories[i] = System.IO.Path.GetRelativePath(path, directories[i]); } return directories; } public static string[] GetFilesRelativePath(string path, string searchPattern, System.IO.SearchOption searchOption) { string[] files = System.IO.Directory.GetFiles(path, searchPattern, searchOption); for (int i = 0; i < files.Length; i++) { files[i] = System.IO.Path.GetRelativePath(path, files[i]); } return files; } public static string GetFileHash(string filePath) { FileInfo fileInfo = new FileInfo(filePath); byte[] hashCode = MD5.Create().ComputeHash(fileInfo.OpenRead()); StringBuilder hashStringBuilder = new StringBuilder(); foreach (byte b in hashCode) { hashStringBuilder.AppendFormat("{0:x2}", b); } return hashStringBuilder.ToString(); } } }