Ejemplo n.º 1
0
        static public MessageFactory Create(typeOfFile type)
        {
            switch (type)
            {
            case typeOfFile.txt: return(new txtMessagesFactory());

            case typeOfFile.xml: return(new xmlMessagesFactory());

            default: throw new System.Exception("Please, input again all parametrs, especially typeOfFile in one from formats: txt or xml!");
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            Computer computer = new Computer();
            DVD      dvd      = new DVD();
            Flash    flash    = new Flash();
            HDD      hdd      = new HDD();

            bool isInputInfo = false;

            bool checkError = true;

            while (checkError)
            {
                PrintMenu();
                char select = ReadKey().KeyChar;
                switch (select)
                {
                case '1':
                    isInputInfo = true;
                    Clear();
                    WriteLine("Для начала введите информацию об устройствах:");

                    dvd.InputInfo();

                    flash.InputInfo();

                    hdd.InputInfo();
                    Clear();
                    break;

                case '2':
                    Clear();
                    AllDevicesMemory(hdd, flash, dvd);
                    ReadKey();
                    Clear();
                    break;

                case '3':
                    Clear();
                    WriteLine("Выберите устройство:");
                    Write("1) HDD");
                    Write("\n2) DVD");
                    WriteLine("\n3) Flash-память");

                    char selectDevice = ReadKey().KeyChar;
                    switch (selectDevice)
                    {
                    case '1':
                        hdd.CopyMemory(computer);
                        break;

                    case '2':
                        dvd.CopyMemory(computer);
                        break;

                    case '3':
                        flash.CopyMemory(computer);
                        break;

                    default:
                        Clear();
                        break;
                    }
                    Clear();
                    break;

                case '4':
                    Clear();
                    if (!isInputInfo)
                    {
                        WriteLine("Сначала заполните информацию об устройствах! \n(Пункт 1)");
                        ReadKey();
                        Clear();
                        break;
                    }

                    bool checkDevice = false;
                    char device;

                    while (!checkDevice)
                    {
                        WriteLine("Выберите устройсто: ");

                        WriteLine("1) DVD");
                        WriteLine("2) HDD");
                        WriteLine("3) Flash");

                        device = ReadKey().KeyChar;

                        switch (device)
                        {
                        case '1':
                            CalculationOfInformation(computer, dvd);
                            checkDevice = true;
                            break;

                        case '2':
                            CalculationOfInformation(computer, hdd);
                            checkDevice = true;
                            break;

                        case '3':
                            CalculationOfInformation(computer, flash);
                            checkDevice = true;
                            break;

                        default:
                            Clear();
                            break;
                        }
                    }
                    ReadKey();
                    Clear();
                    break;

                case '5':
                    Clear();
                    Write("Введите имя файла: ");
                    string name = ReadLine();

                    if (name.Length == 0)
                    {
                        Clear();
                        WriteLine("Имя папки слишком короткое!");
                        ReadKey();
                        Clear();
                        break;
                    }

                    else if (name.Contains("<") || name.Contains(">") || name.Contains("/") || name.Contains("*") || name.Contains("?"))
                    {
                        Clear();
                        Write("В имени файла не должно присутсвовать этих символов:\n");
                        Write("/ < > * ?");
                        ReadKey();
                        Clear();
                        break;
                    }

                    else if (computer.CheckSameName(name, computer.GetFiles()) == false)
                    {
                        Clear();
                        WriteLine("Файл с таким именем уже существует!");
                        ReadKey();
                        Clear();
                        break;
                    }

                    bool       check = false;
                    typeOfFile type  = 0;

                    while (!check)
                    {
                        WriteLine("Выберите тип файла:");
                        WriteLine("1) текстовый");
                        WriteLine("2) exe файл");
                        WriteLine("3) pdf файл");
                        WriteLine("4) png файл");
                        char selectType = ReadKey().KeyChar;
                        switch (selectType)
                        {
                        case '1':
                            type  = typeOfFile.txt;
                            check = true;
                            break;

                        case '2':
                            type  = typeOfFile.exe;
                            check = true;
                            break;

                        case '3':
                            type  = typeOfFile.pdf;
                            check = true;
                            break;

                        case '4':
                            type  = typeOfFile.png;
                            check = true;
                            break;

                        default:
                            Clear();
                            break;
                        }
                    }

                    string data = "";

                    if (type != typeOfFile.png)
                    {
                        Write("\nВведите содержимое файла: ");
                        data = ReadLine();
                    }
                    computer.AddFile(name, data, type);
                    Clear();
                    break;

                case '6':
                    Clear();
                    Write("Введите имя Папки: ");
                    string nameOfFolder = ReadLine();

                    if (nameOfFolder.Length == 0)
                    {
                        Clear();
                        WriteLine("Имя папки слишком короткое!");
                        break;
                    }

                    else if (nameOfFolder.Contains("<") || nameOfFolder.Contains(">") || nameOfFolder.Contains("/") || nameOfFolder.Contains("*") || nameOfFolder.Contains("?"))
                    {
                        Clear();
                        Write("В имени файла не должно присутсвовать этих символов:\n");
                        Write("/ < > * ?");
                        ReadKey();
                        Clear();
                        break;
                    }

                    if (computer.CheckSameName(nameOfFolder, computer.GetFolders()) == false)
                    {
                        Clear();
                        WriteLine("Папка с таким именем уже существует!");
                        ReadKey();
                        Clear();
                        break;
                    }

                    computer.AddFolder(nameOfFolder);

                    break;

                case '7':
                    Clear();
                    computer.ShowContent(computer.GetFiles(), computer.GetFolders());
                    Write("\nВведите имя файла: ");
                    string nameOfFile = ReadLine();
                    computer.DeleteFile(nameOfFile);
                    Clear();
                    computer.ShowContent(computer.GetFiles(), computer.GetFolders());
                    ReadKey();
                    Clear();
                    break;

                case '8':
                    Clear();
                    computer.ShowContent(computer.GetFiles(), computer.GetFolders());
                    Write("\nВведите имя папки: ");
                    string folderName = ReadLine();
                    computer.DeleteFolder(folderName);
                    Clear();
                    computer.ShowContent(computer.GetFiles(), computer.GetFolders());
                    ReadKey();
                    Clear();
                    break;

                case '9':
                    int id;


                    while (true)
                    {
                        Clear();
                        computer.ShowContent(computer.GetFiles(), computer.GetFolders());
                        string choose = ReadLine();
                        if (choose == "")
                        {
                            break;
                        }
                        else if (choose == "w")
                        {
                            if (computer.Way != "C:/")
                            {
                                computer.GoUp();
                            }
                        }

                        else if (!int.TryParse(choose, out id))
                        {
                            Clear();
                        }
                        else
                        {
                            Folder[] foldersTest = computer.GoDown(id, computer.GetFolders());

                            if (foldersTest != null)
                            {
                                computer.SetFile(computer.GetFolderUseID(id, computer.GetFolders()).GetFiles());
                                computer.SetFolder(foldersTest);
                            }
                            computer.ShowContent(computer.GetFiles(), computer.GetFolders());
                        }
                        Clear();
                    }


                    Clear();
                    break;

                default:
                    Clear();
                    break;
                }
            }
        }
Ejemplo n.º 3
0
        public void AddFile(string nameOfFile, string data, typeOfFile type)
        {
            if (((data.Length * sizeof(char)) / 1000 + BusyMemory) > Memory)
            {
                Clear();
                WriteLine("Недостаточно памяти!");
                ReadKey();
                Clear();
                return;
            }

            bool checkCopy = false;

            for (int i = 0; i < files.Length; i++)
            {
                if (nameOfFile == files[i].Name)
                {
                    Console.WriteLine("\nФайл с таким именем уже существует!");
                    checkCopy = true;
                    break;
                }
            }
            if (!checkCopy)
            {
                Array.Resize(ref files, files.Length + 1);
                if (type == typeOfFile.png)
                {
                    data = "\t\t";                         // для того чтобы png файл не весил 0 КБ
                }
                this.files[files.Length - 1] = new File
                {
                    Data = data,
                    Name = nameOfFile,
                    type = type,
                    Size = data.Length * sizeof(char),
                    ID   = -1
                };
                BusyMemory += files[files.Length - 1].Size;

                if (Way != "C:/")
                {
                    string[] bufWay = Way.Split('/');

                    Folder[] bufFolder = folders;
                    File[]   bufFile   = files;

                    folders = backFolders[backFolders.Count - 1];
                    files   = backFiles[backFiles.Count - 1];

                    for (int j = 0; j < folders.Length; j++)
                    {
                        if (folders[j].Name == bufWay[bufWay.Length - 2])
                        {
                            folders[j].Size += bufFile[bufFile.Length - 1].Size;

                            folders[j].SetFolders(bufFolder);
                            folders[j].SetFiles(bufFile);

                            files   = bufFile;
                            folders = bufFolder;
                            break;
                        }
                    }
                }
                Console.WriteLine("\nФайл успешно добавлен!");
                ReadKey();
            }
        }