From 5f4ac5fe023167f5867aca494d191fbd54f7472a Mon Sep 17 00:00:00 2001 From: Dimitar Byalkov Date: Thu, 8 Jul 2021 11:43:10 +0300 Subject: [PATCH] Check available disk space and info messages --- .../BoerseDataConvert/Views/Program.cs | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs index a351e24..21e1525 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs @@ -57,13 +57,23 @@ namespace BoerseDataConvert outputDir = @"D:\Code\ИТ Кариера\Стаж\задача\outputdir"; if (zipFile == "" || inputDir == "" || outputDir == "") { - throw new ArgumentException("Fields cannot be empty"); + throw new ArgumentException("ERROR: Fields cannot be empty"); } // TODO: clear matching files from inputDir - // TODO: check free disk space before file ops + // TODO: create output dir if nonexistent - ZipFile.ExtractToDirectory(zipFile, inputDir); // zip extract + CheckFreeDisk(outputDir); + + try + { + ZipFile.ExtractToDirectory(zipFile, inputDir); // zip extract + Console.WriteLine("INFO: Successful ZIP extraction"); + } + catch (Exception) + { + throw; + } // read files string[] fileNames = Directory.GetFiles(inputDir).Select(x => x.Split('\\', '/').Last()).ToArray(); @@ -87,15 +97,27 @@ namespace BoerseDataConvert break; } } - static void Help() + Console.WriteLine("INFO: Success, exiting"); + } + static void Help() + { + Console.WriteLine("BoerseDataConvert v1.0.0"); + Console.WriteLine("D. Delchev and D. Byalkov, 2021"); + Console.WriteLine("---"); + Console.WriteLine("-i or --input "); + Console.WriteLine("-d or --directory "); + Console.WriteLine("-o or --output "); + Console.WriteLine("-h or --help - Prints this message"); + } + static void CheckFreeDisk(string outputDir) + { + double gibibyte = 1073741824; + DriveInfo driveInfo = new DriveInfo(Directory.GetDirectoryRoot(outputDir)); + double availableSpace = driveInfo.AvailableFreeSpace; + Console.WriteLine($"INFO: {availableSpace / gibibyte}GiB available"); + if (availableSpace < 2147483648) { - Console.WriteLine("BoerseDataConvert v1.0.0"); - Console.WriteLine("D. Delchev and D. Byalkov, 2021"); - Console.WriteLine("---"); - Console.WriteLine("-i or --input "); - Console.WriteLine("-d or --directory "); - Console.WriteLine("-o or --output "); - Console.WriteLine("-h or --help - Prints this message"); + throw new IOException($"ERROR: Insufficient disk space, {availableSpace / gibibyte}GiB less than 2GiB"); } } }