From 66b3a8cc77c3d72fb25320d7732a404073733ab9 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 8 Apr 2023 14:45:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D1=8C=D1=82?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FileSplitter/FileSplitter.csproj | 12 ++++ FileSplitter/Program.cs | 66 +++++++++++++++++++ FileSplitterProj.sln | 31 +++++++++ FileSplitterShared/Classes/FileSplitInfo.cs | 24 +++++++ FileSplitterShared/Classes/SplitFile.cs | 29 ++++++++ FileSplitterShared/Classes/TargetFileInfo.cs | 29 ++++++++ FileSplitterShared/FileSplitterShared.csproj | 11 ++++ FileSplitterShared/Interfaces/ISplitFile.cs | 27 ++++++++ .../Interfaces/ITargetFileInfo.cs | 27 ++++++++ 9 files changed, 256 insertions(+) create mode 100644 FileSplitter/FileSplitter.csproj create mode 100644 FileSplitter/Program.cs create mode 100644 FileSplitterProj.sln create mode 100644 FileSplitterShared/Classes/FileSplitInfo.cs create mode 100644 FileSplitterShared/Classes/SplitFile.cs create mode 100644 FileSplitterShared/Classes/TargetFileInfo.cs create mode 100644 FileSplitterShared/FileSplitterShared.csproj create mode 100644 FileSplitterShared/Interfaces/ISplitFile.cs create mode 100644 FileSplitterShared/Interfaces/ITargetFileInfo.cs diff --git a/FileSplitter/FileSplitter.csproj b/FileSplitter/FileSplitter.csproj new file mode 100644 index 0000000..e052a83 --- /dev/null +++ b/FileSplitter/FileSplitter.csproj @@ -0,0 +1,12 @@ + + + + Exe + net7.0 + enable + enable + FileSplitter.Console + FileSplitter + + + diff --git a/FileSplitter/Program.cs b/FileSplitter/Program.cs new file mode 100644 index 0000000..f83987b --- /dev/null +++ b/FileSplitter/Program.cs @@ -0,0 +1,66 @@ +//Приветственное сообщение +Console.WriteLine("ANB Software Делитель файлов"); +Console.WriteLine("в. 2023.04.08"); + +//Вывожу помощь +Help(); + +//Команда +string command; + +//Начинаю цикл +do +{ + //Запрос команды + Console.WriteLine("Введите команду:"); + + //Считывание команды + command = (Console.ReadLine() ?? "").ToLower(); + + //Выбор действия + switch (command) + { + ////Если команда "Шифровка" + //case "crypt" or "c": + // //Запускаю сценарий шифровки + // await CryptAsync(); + // break; + ////Если команда "Дешифровка" + //case "delete" or "d": + // //Запускаю сценарий дешифровки + // await DecryptAsync(); + // break; + ////Если команда "Установочные файлы" + //case "ifiles" or "i": + // //Запускаю сценарий создания установочных файлов + // await CreateInstallFilesInfoAsync(); + // break; + ////Если команда "Помощь" + //case "help" or "h": + // //Запускаю сценарий помощи + // Help(); + // break; + //Если что-то другое + default: + //Вывожу сообщение об ошибке, если команда не "Выход" + if (command is not ("exit" or "e")) + Console.WriteLine("Команда не опознана! Повторите попытку ещё раз, введите [h]elp для помощи или введите [e]xit для выхода..."); + break; + } +} while (command is not ("exit" or "e")); + +static void SplitFile(string path) +{ + +} + +//Информация о работе с программой +static void Help () +{ + //Публикую сообщение о работе с программой + Console.WriteLine("Информация о работе с программой:\n\t" + + "[c]rypt - шифровка архива\n\t" + + "[d]ecrypt - дешифровка архива\n\t" + + "[i]files - создание списка установочных файлов\n\t" + + "[e]xit - Выход из программы\n\t[h]elp - Повторный вывод этого сообщения."); +} \ No newline at end of file diff --git a/FileSplitterProj.sln b/FileSplitterProj.sln new file mode 100644 index 0000000..af78935 --- /dev/null +++ b/FileSplitterProj.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33516.290 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileSplitter", "FileSplitter\FileSplitter.csproj", "{1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileSplitterShared", "FileSplitterShared\FileSplitterShared.csproj", "{0D7F015B-7E38-4384-A456-3BE07DFE2724}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FD6DA70-8D93-49A3-AAA3-EFB909AD937F}.Release|Any CPU.Build.0 = Release|Any CPU + {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D7F015B-7E38-4384-A456-3BE07DFE2724}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {66369161-B8DF-4F9E-91A7-5B1D5B111763} + EndGlobalSection +EndGlobal diff --git a/FileSplitterShared/Classes/FileSplitInfo.cs b/FileSplitterShared/Classes/FileSplitInfo.cs new file mode 100644 index 0000000..1a9d90b --- /dev/null +++ b/FileSplitterShared/Classes/FileSplitInfo.cs @@ -0,0 +1,24 @@ +using FileSplitter.Shared.Interfaces; + +namespace FileSplitter.Shared.Classes; + +/// +/// Информация о разбиении +/// +public class FileSplitInfo +{ + /// + /// Версия программы, необходимая для сборки файла + /// + public string? FileSplitterVersion { get; set; } + + /// + /// Информация о собираемом файле + /// + public ITargetFileInfo? TargetFile { get; set; } + + /// + /// Информация о частях файла + /// + public List? SplitFiles { get; set; } +} \ No newline at end of file diff --git a/FileSplitterShared/Classes/SplitFile.cs b/FileSplitterShared/Classes/SplitFile.cs new file mode 100644 index 0000000..fa68456 --- /dev/null +++ b/FileSplitterShared/Classes/SplitFile.cs @@ -0,0 +1,29 @@ +using FileSplitter.Shared.Interfaces; + +namespace FileSplitter.Shared.Classes; + +/// +/// Разделенный файл +/// +public class SplitFile: ISplitFile +{ + /// + /// Порядок части + /// + public byte Num { get; set; } + + /// + /// Размер части + /// + public long Size { get; set; } + + /// + /// Смещение начала части от начала итогового файла + /// + public long Offset { get; set; } + + /// + /// md5-сумма части для проверки + /// + public byte[]? Hash { get; set; } +} \ No newline at end of file diff --git a/FileSplitterShared/Classes/TargetFileInfo.cs b/FileSplitterShared/Classes/TargetFileInfo.cs new file mode 100644 index 0000000..2ce6d66 --- /dev/null +++ b/FileSplitterShared/Classes/TargetFileInfo.cs @@ -0,0 +1,29 @@ +using FileSplitter.Shared.Interfaces; + +namespace FileSplitter.Shared.Classes; + +/// +/// Информация о целевом файле +/// +public class TargetFileInfo: ITargetFileInfo +{ + /// + /// Имя файла + /// + public string? FileName { get; set; } + + /// + /// Размер файла + /// + public long FileSize { get; set; } + + /// + /// md5-сумма файла для проверки + /// + public byte[]? FileHash { get; set; } + + /// + /// Количество частей + /// + public byte SplitCount { get; set; } +} \ No newline at end of file diff --git a/FileSplitterShared/FileSplitterShared.csproj b/FileSplitterShared/FileSplitterShared.csproj new file mode 100644 index 0000000..de61e59 --- /dev/null +++ b/FileSplitterShared/FileSplitterShared.csproj @@ -0,0 +1,11 @@ + + + + net7.0 + enable + enable + FileSplitterShared + FileSplitter.Shared + + + diff --git a/FileSplitterShared/Interfaces/ISplitFile.cs b/FileSplitterShared/Interfaces/ISplitFile.cs new file mode 100644 index 0000000..b59bc7e --- /dev/null +++ b/FileSplitterShared/Interfaces/ISplitFile.cs @@ -0,0 +1,27 @@ +namespace FileSplitter.Shared.Interfaces; + +/// +/// Интерфейс разделенного файла +/// +public interface ISplitFile +{ + /// + /// Порядок части + /// + public byte Num { get; set; } + + /// + /// Размер части + /// + public long Size { get; set; } + + /// + /// Смещение начала части от начала итогового файла + /// + public long Offset { get; set; } + + /// + /// md5-сумма части для проверки + /// + public byte[]? Hash { get; set; } +} \ No newline at end of file diff --git a/FileSplitterShared/Interfaces/ITargetFileInfo.cs b/FileSplitterShared/Interfaces/ITargetFileInfo.cs new file mode 100644 index 0000000..98ad5e7 --- /dev/null +++ b/FileSplitterShared/Interfaces/ITargetFileInfo.cs @@ -0,0 +1,27 @@ +namespace FileSplitter.Shared.Interfaces; + +/// +/// Информация о целевом файле +/// +public interface ITargetFileInfo +{ + /// + /// Имя файла + /// + public string? FileName { get; set; } + + /// + /// Размер файла + /// + public long FileSize { get; set; } + + /// + /// md5-сумма файла для проверки + /// + public byte[]? FileHash { get; set; } + + /// + /// Количество частей + /// + public byte SplitCount { get; set; } +} \ No newline at end of file