public async void Compress(IEnumerable <string> files, string outputFile, CancellationTokenSource token) { compressTokenSource = token; filesToCompress = files; stopwatch.Start(); try { App.WriteToReport(string.Format("Почато стискання файлів в архів \"{0}\".", outputFile)); await archiver.CreateAsync(files.ToArray(), outputFile, token); App.WriteToReport(string.Format("Завершено стискання файлів в архів \"{0}\".", outputFile)); } catch (OperationCanceledException) { } stopwatch.Stop(); if (closeAfterCheckBox.IsChecked == true) { this.DialogResult = true; this.Close(); } }
private static async Task CreateArchive(Archiver archiver) { var path = GetPath("Введите путь к файлам"); Console.WriteLine("Использовать шифрование(Да/Нет)?"); var result = Console.ReadLine() ?? ""; var isUseEncrypt = result.Equals("Да", StringComparison.CurrentCultureIgnoreCase); if (isUseEncrypt) { Console.WriteLine("Введите ключ"); var key = Console.ReadLine(); archiver.Compressor.Settings.EncryptKey = key; } await archiver.CreateAsync(path, $"{path}.arh"); }
static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("Недостатня кількість аргументів.\n"); PrintHelp(); return; } var command = args[0]; if (command == "-h" || command == "/h" || command == "-?" || command == "/?") { PrintHelp(); } else if ((command == "-c" || command == "/c") && args.Length >= 2) { var archiver = new Archiver(); archiver.ProgressChanged += (o, a) => { Console.Write("\r{0}%", (a.CurrentSize * 100.0 / a.TotalSize).ToString("F2")); }; var outputFile = "output.bh"; var files = new List <string>(); for (int i = 1; i < args.Length; i++) { var item = args[i]; if (item == "-o") { if (i + 1 < args.Length) { outputFile = args[i + 1]; break; } else { Console.WriteLine("Введено неправильну кількість аргументів."); return; } } else { files.Add(item); } } Console.WriteLine("Почато стиснення файлів до архіву \"{0}\".", outputFile); archiver.CreateAsync(files.ToArray(), outputFile, new CancellationTokenSource()).GetAwaiter().GetResult(); Console.WriteLine("\nЗакінчено стиснення файлів до архіву \"{0}\".", outputFile); } else if ((command == "-d" || command == "/d") && args.Length >= 2) { var archiver = new Archiver(); archiver.ProgressChanged += (o, a) => { Console.Write("\r{0}%", (a.CurrentSize * 100.0 / a.TotalSize).ToString("F2")); }; var inputFile = args[1]; var outputFolder = string.Empty; if (args.Length > 2 && args[2] == "-o") { if (args.Length > 3) { outputFolder = args[3]; } else { Console.WriteLine("Введено неправильну кількість аргументів."); return; } } Console.WriteLine("Почато розпакування файлів з архіву \"{0}\".", inputFile); archiver.ExtractAllAsync(inputFile, outputFolder, new CancellationTokenSource()).GetAwaiter().GetResult(); Console.WriteLine("\nЗакінчено розпакування файлів з архіву \"{0}\".", inputFile); } else { Console.WriteLine("Введено неправильні аргументи.\n"); PrintHelp(); } }