Книга: C# для профессионалов. Том II
Класс StreamWriter
Класс StreamWriter
Он работает практически таким же образом, как и StreamReader
, за исключением того только, что StreamWriter
используется для записи в файл (или в другой поток). Возможности создания StreamWriter
включают в себя:
StreamWriter sw = new StreamWriter(@"C:My DocumentsReadMe.txt");
Приведенный выше код будет использовать кодирование UTF8, которое рассматривается в .NET как метод кодирования по умолчанию. Если желательно определить альтернативное кодирование:
StreamWriter sw = new StreamWriter(@"C:My DocurnentsReadMe.txt", true, Encoding.ASCII);
В этом конструкторе вторым параметром является Boolean, который указывает, должен ли файл быть открыт для добавления. Странно, но не существует конструктора, который получает только имя файла и класс кодирования.
Конечно, можно соединить StreamWriter
с файловым потоком, чтобы предоставить больший контроль над параметрами открытия файла:
FileStream fs = new FileStream(@"C:Му DocumentsReadMe.txt",
не реализует никаких методов, которые возвращают
FileMode.CreateNew, FileAcces.Write, FileShare.ShareRead);
StreamWriter sw = new StreamWriter(fs);
FileInfoStreamWriter
. Альтернативно, если вы захотите создать новый файл и начать записывать в него данные, то может оказаться полезной такая последовательность действий:
FileInfo MyFile = new FileInfo(@"C:My DocumentsNewFile.txt");
StreamWriter sw = MyFile.CreateText();
Так же, как и со всеми другими потоковыми классами, важно закрыть StreamWriter
, когда работа закончена:
sw.Close();
Запись в поток делается с помощью любого из четырех перегружаемых методов StreamWriter.Write()
. Простейший из них записывает строку и дополняет ее комбинацией возврат каретки — перевод строки:
string NextLine = "Groovy Line";
sw.Write(NextLine);
Можно также записать один символ:
char NextChar = 'а';
sw.Write(NextChar);
Массив символов также возможен:
char [] Char Array = new char[100];
// инициализация этого массива символов
sw.Write(CharArray);
Можно даже записать часть массива символов:
int nCharsToWrite = 50;
int StartAtLocation = 25;
char [] CharArray = new char[100];
// инициализируем эти символы
sw.Write(CharArray, StartAtLocation, nCharsToWrite);