// Указать, что будет происходить при изменении,
// создании или удалении файла.
watcher.Changed += (s, e) =>
Console.WriteLine($"File: {e.FullPath} {e.ChangeType}!");
watcher.Created += (s, e) =>
Console.WriteLine($"File: {e.FullPath} {e.ChangeType}!");
watcher.Deleted += (s, e) =>
Console.WriteLine($"File: {e.FullPath} {e.ChangeType}!");
// Указать, что будет происходить при переименовании файла.
watcher.Renamed += (s, e) =>
Console.WriteLine($"File: {e.OldFullPath} renamed to {e.FullPath}");
// Начать наблюдение за каталогом.
watcher.EnableRaisingEvents = true;
// Ожидать от пользователя команды завершения программы.
Console.WriteLine(@"Press 'q' to quit app.");
// Сгенерировать несколько событий.
using (var sw = File.CreateText("Test.txt"))
{
sw.Write("This is some text");
}
File.Move("Test.txt","Test2.txt");
File.Delete("Test2.txt");
while(Console.Read()!='q');
При запуске данной программы последние ее строки будут создавать, изменять, переименовывать и затем удалять текстовый файл, попутно генерируя события. Кроме того, вы можете перейти в каталог bin\debug\net5.0
*.txt), что приведет к инициированию дополнительных событий.***** The Amazing File Watcher App *****
Press 'q' to quit app.
File: .\Test.txt Created!
File: .\Test.txt Changed!
File: .\Test.txt renamed to .\Test2.txt
File: .\Test2.txt Deleted!
На этом знакомство с фундаментальными операциями ввода-вывода, предлагаемыми платформой .NET Core, завершено. Вы наверняка будете применять все продемонстрированные приемы во многих приложениях. Вдобавок вы обнаружите, что службы
Понятие сериализации объектов
Термин
System.IO.Например, пусть требуется создать настольное приложение с графическим пользовательским интерфейсом, которое должно предоставлять конечным пользователям возможность сохранения их предпочтений (цвета окон, размер шрифта и т.д.). Для этого можно определить класс по имени UserPrefs
System.IO.BinaryWriter пришлось бы UserPrefs. Подобным же образом при загрузке данных из файла обратно в память понадобилось бы применять класс System.IO.BinaryReader и снова UserPrefs.Все это выполнимо, но вы можете сэкономить значительное время за счет использования сериализации XML (eXtensible Markup Language — расширяемый язык разметки) или JSON (JavaScript Object Notation — запись объектов JavaScript). Каждый из указанных форматов состоит из пар "имя-значение", позволяя представлять открытое состояние объекта в одиночном блоке текста, который можно потреблять между платформами и языками программирования. В итоге полное открытое состояние объекта может быть сохранено с помощью лишь нескольких строк кода.