Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Шрифт:
Интервал:
Закладка:
Обратите внимание, что метод OpenRead() требует, чтобы файл существовал. Следующий код создает файл и затем закрывает объект FileStream, так что он может использоваться методом OpenRead():
f3.Create().Close();
Вот полный пример:
var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}Test.dat";
...
<b>// Получить объект FileStream с правами только для чтения.</b>
FileInfo f3 = new FileInfo(fileName);
// Перед использованием OpenRead() файл должен существовать.
f3.Create().Close();
using(FileStream readOnlyStream = f3.OpenRead())
{
<b> // Использовать объект FileStream...</b>
}
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})f3.Delete();
<b>// Теперь получить объект FileStream с правами только для записи.</b>
FileInfo f4 = new FileInfo(fileName);
using(FileStream writeOnlyStream = f4.OpenWrite())
{
<b> // Использовать объект FileStream...</b>
}
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})f4.Delete();
Метод FileInfо.OpenText()
Еще одним членом типа FileInfo, связанным с открытием файлов, является OpenText(). В отличие от Create(), Open(), OpenRead() и OpenWrite() метод OpenText() возвращает экземпляр типа StreamReader, а не FileStream. Исходя из того, что на диске С: имеется файл по имени boot.ini, вот как получить доступ к его содержимому:
var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}Test.dat";
...
<b>// Получить объект StreamReader.</b>
<b>// Если вы работаете не на машине с Windows,</b>
<b>// тогда измените имя файла надлежащим образом.</b>
FileInfo f5 = new FileInfo(fileName);
// Перед использованием OpenText() файл должен существовать.
f5.Create().Close();
using(StreamReader sreader = f5.OpenText())
{
<b> // Использовать объект StreamReader...</b>
}
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})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())
{
<b> // Использовать объект StreamWriter...</b>
}
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})f6.Delete();
FileInfo f7 = new FileInfo(fileName);
using(StreamWriter swriterAppend = f7.AppendText())
{
<b> // Использовать объект StreamWriter...</b>
}
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})f7.Delete();
Как и можно было ожидать, тип StreamWriter предлагает способ записи данных в связанный с ним файл.
Работа с типом File
В типе File определено несколько статических методов для предоставления функциональности, почти идентичной той, которая доступна в типе FileInfo. Подобно FileInfо тип File поддерживает методы AppendText(), Create(), CreateText(), Open(), OpenRead(), OpenWrite() и OpenText(). Во многих случаях типы File и FileInfo могут применяться взаимозаменяемо. Обратите внимание, что методы OpenText() и OpenRead() требуют существования файла. Чтобы взглянуть на тип File в действии, упростите приведенные ранее примеры использования типа FileStream, применив в каждом из них тип File:
var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}Test.dat";
...
<b>// Использование File вместо FileInfo.</b>
using (FileStream fs8 = File.Create(fileName))