Как было показано в предыдущем примере DirectoryApp
FileInfo позволяет получать сведения о существующих файлах на жестком диске (такие как время создания, размер и атрибуты) и помогает создавать, копировать, перемещать и удалять файлы. В дополнение к набору функциональности, унаследованной от FileSystemInfo, класс FileInfo имеет ряд уникальных членов,которые описаны в табл. 20.4.Обратите внимание, что большинство методов класса FileInfo
FileStream и StreamWriter), который позволяет начать чтение и запись данных в ассоциированный файл во множестве форматов. Вскоре мы исследуем указанные типы, но прежде чем рассмотреть работающий пример, давайте изучим различные способы получения дескриптора файла с использованием класса FileInfo.Метод FileInfo.Create()
Следующий набор примеров находится в проекте консольного приложения по имени SimpleFileIO
FileInfo.Create():using System;
using System.IO;
Console.WriteLine("***** Simple IO with the File Type *****\n");
// Измените это на папку на своей машине, к которой вы имеете доступ
// по чтению/записи или запускайте приложение от имени администратора.
var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}temp
{Path.
DirectorySeparatorChar}Test.dat";// Создать новый файл на диске С:.
FileInfo f = new FileInfo(fileName);
FileStream fs = f.Create();
// Использовать объект FileStream...
// Закрыть файловый поток.
fs.Close();
На заметку!
В зависимости от имеющихся у вас пользовательских разрешений и конфигурации системы примеры, которые здесь рассматриваются, могут требовать запуска Visual Studio от имени администратора.Метод FileInfo.Create()
FileStream, который предоставляет синхронную и асинхронную операции записи/чтения лежащего в его основе файла. Имейте в виду, что объект FileStream, возвращаемый FileInfo.Create(), открывает полный доступ по чтению и записи всем пользователям.Также обратите внимание, что после окончания работы с текущим объектом FileStream
FileStream реализует интерфейс IDisposable, можно использовать блок using и позволить компилятору сгенерировать логику завершения (подробности ищите в главе 8):var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}Test.dat";
...
// Поместить файловый поток внутрь оператора using.
FileInfo f1 = new FileInfo(fileName);
using (FileStream fs1 = f1.Create())
{
// Использовать объект FileStream...
}
f1.Delete();
На заметку!
Почти все примеры в этой главе содержат операторыusing. Можно также использовать новый синтаксис объявлений using, но было решено придерживаться операторов using, чтобы сосредоточить примеры на исследуемых компонентах System.IO.Метод FileInfо.Open()
С помощью метода FileInfo.Open()
FileInfo.Create(), поскольку Open() обычно принимает несколько параметров для описания общей структуры файла, с которым будет производиться работа. В результате вызова Open() возвращается объект FileStream. Взгляните на следующий код:var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}Test.dat";
...
// Создать новый файл посредством FileInfо.Open().
FileInfo f2 = new FileInfo(fileName);
using(FileStream fs2 = f2.Open(FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.None))
{
// Использовать объект FileStream...
}