Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен. Жанр: Программирование год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:
class="p1">    Console.WriteLine("Format: {0}", d.DriveFormat);  // формат устройства

    Console.WriteLine("Label: {0}", d.VolumeLabel);   // метка тома

  }

  Console.WriteLine();

}

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

{

  CreateNew,

  Create,

  Open,

  OpenOrCreate,

  Truncate,

  Append

}

Второй параметр метода Open() — значение перечисления FileAccess — служит для определения поведения чтения/записи лежащего в основе потока:

public enum FileAccess

{

  Read,

  Write,

  ReadWrite

}

Наконец, третий параметр метода Open() — значение перечисления FileShare — указывает, каким образом файл может совместно использоваться другими файловыми дескрипторами:

public enum FileShare

{

  None,

  Read,

  Write,

  ReadWrite,

  Delete,

  Inheritable

}

Методы FileInfо.OpenRead() и FileInfо.OpenWrite()

Метод FileInfо.Open() позволяет получить дескриптор файла в гибкой манере, но класс FileInfо также предлагает методы OpenRead() и OpenWrite(). Как и можно было ожидать, указанные методы возвращают подходящим образом сконфигурированный только для чтения или только для записи объект FileStream без необходимости в предоставлении значений разных перечислений. Подобно FileInfо.Create() и FileInfо.Open() методы OpenRead() и OpenWrite() возвращают объект FileStream.

Обратите внимание, что метод OpenRead() требует, чтобы файл существовал. Следующий код создает файл и затем закрывает объект FileStream, так что он может использоваться методом OpenRead():

f3.Create().Close();

Вот полный пример:

var fileName = $@"C{Path.VolumeSeparatorChar}

                   {Path.DirectorySeparatorChar}Test.dat";

...

// Получить объект FileStream с правами только для чтения.

FileInfo f3 = new FileInfo(fileName);

// Перед использованием OpenRead() файл должен существовать.

f3.Create().Close();

using(FileStream readOnlyStream = f3.OpenRead())

{

  // Использовать объект FileStream...

}

f3.Delete();

// Теперь получить объект FileStream с правами только для записи.

FileInfo f4 = new FileInfo(fileName);

using(FileStream writeOnlyStream = f4.OpenWrite())

{

 

Перейти на страницу:

Эндрю Троелсен читать все книги автора по порядку

Эндрю Троелсен - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Эндрю Троелсен. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*