Exemple #1
0
        static void Main(string[] args)
        {
            /*
             * 1. Ввести с клавиатуры произвольный набор данных и сохранить его в текстовый файл.
             */

            Console.WriteLine("Введи любой текст");
            string text     = Console.ReadLine();
            string filename = "text.txt";

            File.WriteAllText(filename, text);

            /*
             * 2. Написать программу, которая при старте дописывает текущее время в файл
             * «startup.txt».
             */

            string date     = Convert.ToString(DateTime.Now);
            string namefile = "startup.txt";

            File.AppendAllText(namefile, date);
            File.AppendAllText(namefile, Environment.NewLine);

            /*
             * 3. Ввести с клавиатуры произвольный набор чисел (0...255) и записать их в бинарный
             * файл.
             */

            Console.WriteLine("Введите набор (0...255) чисел");
            int    number = Convert.ToInt32(Console.ReadLine());
            string nameF  = "num.bin";

            byte[] num = { (byte)number };
            File.WriteAllBytes(nameF, num);

            /*
             * 4. (*) Сохранить дерево каталогов и файлов по заданному пути в текстовый файл — с
             * рекурсией и без.
             */

            //без рекурсии, как с рекурсией сделать не придумал
            string workDir = @"C:\Users\пк\Desktop\geekbrains\introduction\lesson5";

            Console.WriteLine(Directory.Exists(workDir));
            string[] entries = Directory.GetFileSystemEntries(workDir, "*", SearchOption.AllDirectories);
            for (int i = 0; i < entries.Length; i++)
            {
                File.AppendAllText("task4(norec).txt", entries[i]);
                File.AppendAllText("task4(norec).txt", Environment.NewLine);
            }

            /*
             * 5. (*) Список задач (ToDo-list):
             *  ● написать приложение для ввода списка задач;
             *  ● задачу описать классом ToDo с полями Title и IsDone;
             *  ● на старте, если есть файл tasks.json/xml/bin (выбрать формат), загрузить
             *  из него массив имеющихся задач и вывести их на экран;
             *  ● если задача выполнена, вывести перед её названием строку «[x]»;
             *  ● вывести порядковый номер для каждой задачи;
             *  ● при вводе пользователем порядкового номера задачи отметить задачу с этим
             *  порядковым номером как выполненную;
             *  ● записать актуальный массив задач в файл tasks.json/xml/bin.
             */

            //когда пытаюсь сделать десериализацию появляется ошибка, которую не понимаю как пофиксить
            //при этом дисериализация у файла без массива работает
            ToDo[] tdArr = new ToDo[]
            {
                new ToDo()
                {
                    Title = "Прочесть задание", IsDone = "Выполнено"
                },
                new ToDo()
                {
                    Title = "Написать код", IsDone = "В процессе"
                }
            };
            string todoName = "todolist.json";
            string json     = JsonSerializer.Serialize <ToDo[]>(tdArr);

            File.WriteAllText(todoName, json);
            string read = File.ReadAllText(todoName);
            ToDo   td   = JsonSerializer.Deserialize <ToDo>(read);

            Console.WriteLine(td.Title);
        }
        static void Main(string[] args)
        {
            // 1.	Ввести с клавиатуры произвольный набор данных и сохранить его в текстовый файл.
            #region case1
            SaveToFile("new text file.txt");
            #endregion

            // 2.	Написать программу, которая при старте дописывает текущее время в файл «startup.txt».
            #region case2
            for (int index = 0; index < 3; ++index)
            {
                AddTimeToFile("startup.txt");
            }
            #endregion

            // 3.	Ввести с клавиатуры произвольный набор чисел (0...255) и записать их в бинарный файл.
            #region case3
            Console.WriteLine();
            while (!SaveToBinFile("new binary file.bin"))
            {
                Console.WriteLine("Попробуйте снова...\n");
            }
            Console.ReadLine();
            #endregion

            // 4.	(*) Сохранить дерево каталогов и файлов по заданному пути в текстовый файл — с рекурсией и без.
            #region case4
            // вывод папок без рекурсии
            PrintDir(false);
            // вывод папок с рекурсией
            PrintDir(true);
            Console.ReadLine();
            #endregion

            // 5.	(*) Список задач (ToDo-list)
            #region case5
            string path = "tasks.json";
            bool   flag = true;
            ToDo[] toDoArray;
            if (File.Exists(path))
            {
                Console.Write("Файл задач существует");
                string[] strArray = File.ReadAllLines(path);
                toDoArray = new ToDo[strArray.Length];
                for (int index = 0; index < toDoArray.Length; ++index)
                {
                    if (strArray[index] != string.Empty)
                    {
                        toDoArray[index] = JsonSerializer.Deserialize <ToDo>(strArray[index]);
                        flag             = false;
                    }
                }
                Console.WriteLine(flag ? ", но пустой" : " и будет загружен список задач:");
            }
            else
            {
                Console.WriteLine("Файла задач не существует");
                toDoArray = new ToDo[0];
            }
            if (flag)
            {
                string[] strArray;
                while (true)
                {
                    Console.WriteLine("Введите задачи вручную через запятую: ");
                    strArray = Console.ReadLine().Split(new char[1] {
                        ','
                    }, StringSplitOptions.RemoveEmptyEntries);
                    if (strArray.Length < 1)
                    {
                        Console.WriteLine("Список задач пуст...");
                    }
                    else
                    {
                        break;
                    }
                }
                toDoArray = new ToDo[strArray.Length];
                for (int index = 0; index < toDoArray.Length; ++index)
                {
                    toDoArray[index] = new ToDo(strArray[index], false);
                }
                Console.WriteLine("Получившийся список:");
            }
            for (int index = 0; index < toDoArray.Length; ++index)
            {
                toDoArray[index].PrintTask(index + 1);
            }
            int length = toDoArray.Length;
            while (length > 0)
            {
                Console.Write("Введите номер выполненой задачи или \"0\" для завершения: ");
                string s = Console.ReadLine();
                int    result;
                if (!int.TryParse(s, out result) || result > toDoArray.Length)
                {
                    Console.WriteLine($"Ошибка!!! Недопустимый символ \"{s}\"");
                }
                else if (result != 0)
                {
                    toDoArray[result - 1].IsDone = true;
                    --length;
                }
                else
                {
                    break;
                }
            }
            Console.WriteLine("Результирующий список:");
            File.WriteAllText(path, "");
            for (int index = 0; index < toDoArray.Length; ++index)
            {
                if (!toDoArray[index].IsDone)
                {
                    string str = JsonSerializer.Serialize <ToDo>(toDoArray[index]);
                    File.AppendAllText(path, str + "\r\n");
                }
                toDoArray[index].PrintTask(index + 1);
            }
            Console.WriteLine($"Список актуальных задач сохранён в файл \"{path}\"");
            Console.ReadLine();
            #endregion
        }