// Вставить новую строку.
writer.Write(writer.NewLine);
}
Console.WriteLine("Created file and wrote some thoughts...");
Console.ReadLine();
//File.Delete("reminders.txt");
После выполнения программы можете просмотреть содержимое созданного файла, который будет находиться в корневом каталоге проекта (Visual Studio Code) или в подкаталоге bin\Debug\net5.0
CreateText() вы не указали абсолютный путь, а стандартным местоположением является текущий каталог выполнения сборки.Чтение из текстового файла
Далее вы научитесь программно читать данные из файла, используя соответствующий тип StreamReader
StreamReader является производным от абстрактного класса TextReader, который предлагает функциональность, описанную в табл. 20.9.Расширьте текущий пример приложения с целью применения класса StreamReader
reminders.txt:Console.WriteLine("***** Fun with StreamWriter/StreamReader *****\n");
...
// Прочитать данные из файла.
Console.WriteLine("Here are your thoughts:\n");
using(StreamReader sr = File.OpenText("reminders.txt"))
{
string input = null;
while ((input = sr.ReadLine()) != null)
{
Console.WriteLine (input);
}
}
Console.ReadLine();
После запуска программы в окне консоли отобразятся символьные данные из файла reminders.txt
Прямое создание объектов типа StreamWriter/StreamReader
Один из запутывающих аспектов работы с типами пространства имен System.IO
CreateText() позволяет получить объект StreamWriter с типом File или FileInfo. Вообще говоря, есть еще один способ работы с объектами StreamWriter и StreamReader: создание их напрямую. Скажем, текущее приложение можно было бы переделать следующим образом:Console.WriteLine("***** Fun with StreamWriter/StreamReader *****\n");
// Получить объект StreamWriter и записать строковые данные.
using(StreamWriter writer = new StreamWriter("reminders.txt"))
{
...
}
// Прочитать данные из файла.
using(StreamReader sr = new StreamReader("reminders.txt"))
{
...
}
Несмотря на то что существование такого количества на первый взгляд одинаковых подходов к файловому вводу-выводу может сбивать с толку, имейте в виду,что конечным результатом является высокая гибкость. Теперь, когда вам известно, как перемещать символьные данные в файл и из файла с применением классов StreamWriter
StreamReader, давайте займемся исследованием роли классов StringWriter и StringReader.Работа с типами StringWriter и StringReader
Классы StringWriter
StringReader можно использовать для трактовки текстовой информации как потока символов в памяти. Это определенно может быть полезно, когда нужно добавить символьную информацию к лежащему в основе буферу. Для иллюстрации в следующем проекте консольного приложения (StringReaderWriterApp) блок строковых данных записывается в объект StringWriter вместо файла на локальном жестком диске (не забудьте импортировать пространства имен System.IO и System.Text):using System;
using System.IO;
using System.Text;
Console.WriteLine("***** Fun with StringWriter/StringReader *****\n");
// Создать объект StringWriter и записать символьные данные в память.
using(StringWriter strWriter = new StringWriter())
{
strWriter.WriteLine("Don't forget Mother's Day this year...");
// Получить копию содержимого (хранящегося в строке) и вывести на консоль.