Язык программирования C#9 и платформа .NET5
Шрифт:
}
Console.ReadLine;
Вот возможный вывод:
***** Fun with DriveInfo *****
Name: C:\
Type: Fixed
Free space: 284131119104
Format: NTFS
Label: OS
Name: M:\
Type: Network
Free space: 4711871942656
Format: NTFS
Label: DigitalMedia
К
Directory
, DirectoryInfо
и DriveInfo
. Далее вы ознакомитесь с тем, как создавать, открывать, закрывать и удалять файлы, находящиеся в заданном каталоге. Работа с типом FileInfo
Как было показано в предыдущем примере
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...
}
f2.Delete;
Эта версия перегруженного метода
Open
требует передачи трех параметров. Первый параметр указывает общий тип запроса ввода-вывода (например, создать новый файл, открыть существующий файл или дописать в файл), который представлен в виде перечисления FileMode
(описание его членов приведено в табл. 20.5):
public enum FileMode
Поделиться с друзьями: