Чтение онлайн

ЖАНРЫ

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

{

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)

{

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

}

f4.Delete;

Метод FileInfо.OpenText

Еще одним членом типа

FileInfo
, связанным с открытием файлов, является
OpenText
. В отличие от
Create
,
Open
,
OpenRead
и
OpenWrite
метод
OpenText
возвращает экземпляр типа
StreamReader
, а не
FileStream
. Исходя из того, что на диске С: имеется файл по имени
boot.ini
, вот как получить доступ к его содержимому:

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

{Path.DirectorySeparatorChar}Test.dat";

...

// Получить объект StreamReader.

// Если вы работаете не на машине с Windows,

// тогда измените имя файла надлежащим образом.

FileInfo f5 = new FileInfo(fileName);

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

f5.Create.Close;

using(StreamReader sreader = f5.OpenText)

{

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

}

f5.Delete;

Вскоре вы увидите, что тип

StreamReader
предоставляет способ чтения символьных данных из лежащего в основе файла.

Методы FileInfo.CreateText и FileInfo.AppendText

Последними двумя методами, представляющими интерес в данный момент, являются

CreateText
и
AppendText
. Оба они возвращают объект
StreamWriter
:

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

{Path.DirectorySeparatorChar}Test.dat";

...

FileInfo f6 = new FileInfo(fileName);

using(StreamWriter swriter = f6.CreateText)

{

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

}

f6.Delete;

FileInfo f7 = new FileInfo(fileName);

using(StreamWriter swriterAppend = f7.AppendText)

{

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

}

f7.Delete;

Как и можно было ожидать, тип

StreamWriter
предлагает способ записи данных в связанный с ним файл.

Работа с типом File

В типе

File
определено несколько статических методов для предоставления функциональности, почти идентичной той, которая доступна в типе
FileInfo
. Подобно
FileInfо
тип
File
поддерживает методы
AppendText
,
Create
,
CreateText
,
Open
,
OpenRead
,
OpenWrite
и
OpenText
. Во многих случаях типы
File
и
FileInfo
могут применяться взаимозаменяемо. Обратите внимание, что методы
OpenText
и
OpenRead
требуют существования файла. Чтобы взглянуть на тип
File
в действии, упростите приведенные ранее примеры использования типа
FileStream
, применив в каждом из них тип
File
:

Поделиться с друзьями: