Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
<b> // Записать данные.</b>
bw.Write(aDouble);
bw.Write(anInt);
bw.Write(aString);
}
Console.WriteLine("Done!");
Console.ReadLine();
Обратите внимание, что объект
FileStream
FileInfo.OpenWrite()
BinaryWriter
BinaryWriter
Stream
FileStream
MemoryStream
BufferedStream
MemoryStream
Для чтения данных из файла
BinFile.dat
BinaryReader
...
FileInfo f = new FileInfo("BinFile.dat");
...
<b>// Читать двоичные данные из потока.</b>
using(BinaryReader br = new BinaryReader(f.OpenRead()))
{
Console.WriteLine(br.ReadDouble());
Console.WriteLine(br.ReadInt32());
Console.WriteLine(br.ReadString());
}
Console.ReadLine();
Программное слежение за файлами
Теперь, когда вы знаете, как применять различные средства чтения и записи, давайте займемся исследованием роли класса
FileSystemWatcher
FileSystemWatcher
System
IO.NotifyFilters:
public enum NotifyFilters
{
Attributes, CreationTime,
DirectoryName, FileName,
LastAccess, LastWrite,
Security, Size
}
Чтобы начать работу с типом
FileSystemWatcher
Path
Filter
В настоящий момент можно выбрать обработку событий
Changed
Created
Deleted
FileSystemEventHandler
<b>// Делегат FileSystemEventHandler должен указывать</b>
<b>// на методы, соответствующие следующей сигнатуре.</b>
void MyNotificationHandler(object source, FileSystemEventArgs e)
Событие
Renamed
RenamedEventHandler
// Делегат RenamedEventHandler должен указывать
// на методы, соответствующие следующей сигнатуре.
<b>void MyRenamedHandler(object source, RenamedEventArgs e)</b>
В то время как для обработки каждого события можно применять традиционный синтаксис делегатов/событий, вы определенно будете использовать синтаксис лямбда-выражений.
Давайте взглянем на процесс слежения за файлом. Показанный ниже проект консольного приложения(
MyDirectoryWatcher
using
System.IO
*.txt
bindebugnet5.0
using System;
using System.IO;
Console.WriteLine("***** The Amazing File Watcher App *****n");
<b>// Установить путь к каталогу, за которым нужно наблюдать.</b>
FileSystemWatcher watcher = new FileSystemWatcher();
try
{
watcher.Path = @".";
}
catch(ArgumentException ex)
{
Console.WriteLine(ex.Message);
return;
}
<b>// Указать цели наблюдения.</b>
watcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
<b>// Следить только за текстовыми файлами.</b>
watcher.Filter = "*.txt";
<b>// Добавить обработчики событий.</b>
<b>// Указать, что будет происходить при изменении,</b>