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 }