/// <summary> /// Создать экземпляр класса распарсив файл. /// </summary> /// <param name="file"></param> /// <param name="localeFolderName">Название папки локализации программы</param> /// <exception cref="FileNotFoundException">Генерируется, если файл не найден</exception> /// <exception cref="ArgumentNullException">Генерируется, если переданная строка имеет значение null</exception> /// <returns></returns> public static UpdateFile FromFile(string file, string localeFolderName) { if (file == null) { throw new ArgumentNullException("file"); } if (file == null) { throw new ArgumentNullException("localeFolderName"); } var fileInfo = new FileInfo(file); if (!fileInfo.Exists) { throw new FileNotFoundException("Файл: \"{0}\" не найден", Path.GetFileName(file)); } //string filePath = file.Split(Path.DirectorySeparatorChar).Last().Split('\\')[0]; string[] filePathSegments = file.Split(Path.DirectorySeparatorChar); //string filePath = filePathSegments[filePathSegments.Length - 1]; string fileName = filePathSegments[filePathSegments.Length - 1]; //string filePath = filePathSegments[filePathSegments.Length + 1]; var updateFile = new UpdateFile(fileName, HashHelper.GetMD5HashOfFile(file), fileInfo.Length); return(updateFile); }
/// <summary> /// Инициализирует текущий экземпляр информации о патче посредством разбора переданного форматированного текста. /// </summary> /// <param name="patchList"> /// Форматированный текст, представляющий из себя /// список информации о файлах для обновления</param> /// <exception cref="ArgumentNullException">Генерирует, если один из переданных параметров равен null</exception> public PatchInfo(string patchList) { if (patchList == null) { throw new ArgumentNullException("patchList"); } string[] formattedLines = patchList.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).ToArray(); UpdateFile[] updateFiles = new UpdateFile[formattedLines.Length]; long sumOfLenght = 0L; for (int i = 0; i < formattedLines.Length; i++) { UpdateFile updateFile = UpdateFile.FromString(formattedLines[i]); updateFiles[i] = updateFile; sumOfLenght += updateFile.FileSize; } PatchLength = sumOfLenght; UpdateFiles = updateFiles; }