Язык программирования 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
:
Поделиться с друзьями: