
10.2.1. Класс StreamWriter. Запись в текстовый файл
Получив объект FileStream, можно поместить его в оболочку StreamWriter или StreamReader и использовать их методы для работы с файлом. Эти классы значительно облегчают работу с текстовыми файлами, но не позволяют переставлять файловый указатель в произвольную позицию.
Класс StreamWriter позволяет записывать символы и строки в файл, оставляя классу внутреннее преобразование и запись объекта FileStream.
Запись в текстовый файл должна состоять из следующих шагов:
создать поток FileStream;
создать объект StreamWriter, связав его с потоком;
методом Write() или WriteLine() записать данные;
методом Close(), освободив промежуточный буфер, закрыть файл;
методом Close(), закрыть файловый поток.
Пример 10.1. Записать несколько строк в текстовый файл
Листинг 10.1. Запись строк в текстовый файл
static void Main(string[] args)
{
try
{
FileStream aFile =
new FileStream("Test.txt",
FileMode.OpenOrCreate);
StreamWriter f =
new StreamWriter(aFile);
bool ok = true;
f.WriteLine("Первая строка");
f.WriteLine("Дата: {0}",
DateTime.Now.ToLongDateString());
f.Write("Третья строка,");
f.Write(" ok = {0}.", ok);
f.Close();
aFile.Close();
}
catch (IOException e)
{
Console.WriteLine("Ошибка IO!");
Console.WriteLine(e.ToString());
Console.ReadLine();
return;
}
}
В результате работы этой программы в папке ..\Debug будет создан файл Test.txt, в котором будут следующие стоки:
Первая строка
Дата: 9 декабря 2012 г.
Третья строка, ok = True.
Существует несколько способов создания объекта StreamWriter:
Если объект FileStream уже создан, можно использовать такой код для создания объекта StreamWriter:
FileStream aFile = new FileStream("Test.txt",
FileMode.CreateNew);
StreamWriter f = new StreamWriter(aFile) ;
Объект StreamWriter можно также создать непосредственно из файла:
StreamWriter f = new StreamWriter("Test.txt", true);
Этот конструктор принимает имя файла и логическое значение, которое определяет, следует ли дописывать файл или создать новый.
Если логический параметр установлен в false, то создается новый файл или существующий файл усекается до нулевого размера, а затем открывается.
Если оно установлено в true, файл открывается, и его данные сохраняются. Если файла нет, он создается.
В отличие от создания объекта FileStream, создание StreamWriter не предоставляет аналогичного набора опций. Помимо логического параметра для дописывания или создания нового файла, нет возможности специфицировать свойство FileMode, как это делалось с классом FileStream. He имея возможности установить свойство FileAccess, всегда можно установить привилегии чтения/записи файла. Чтобы использовать любые из расширенных параметров, их сначала потребуется специфицировать в конструкторе FileStreeam, а затем создать StreamWriter из объекта FileStream.