Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 364 365 366 367 368 369 370 371 372 ... 642

Запись в текстовый файл

Чтобы увидеть класс StreamWriter в действии, создайте новый проект консольного приложения по имени StreamWriterReaderApp и импортируйте пространства имен System.IO и System.Text. В показанном ниже коде с помощью метода File.CreateText() создается новый файл reminders.txt внутри текущего каталога выполнения. С применением полученного объекта StreamWriter в новый файл будут добавляться текстовые данные.

using System;

using System.IO;

using System.Text;

Console.WriteLine("***** Fun with StreamWriter / StreamReader *****n");

<b>// Получить объект StreamWriter и записать строковые данные.</b>

using(StreamWriter writer = File.CreateText(&quot;reminders.txt&quot;))

{

  writer.WriteLine(&quot;Don't forget Mother's Day this year...&quot;);

  writer.WriteLine(&quot;Don't forget Father's Day this year...&quot;);

  writer.WriteLine(&quot;Don't forget these numbers:&quot;);

  for(int i = 0; i &lt; 10; i++)

  {

    writer.Write(i + &quot; &quot;);

  }

<b>  // Вставить новую строку.</b>

  writer.Write(writer.NewLine);

}

Console.WriteLine(&quot;Created file and wrote some thoughts...&quot;);

Console.ReadLine();

//File.Delete(&quot;reminders.txt&quot;);

После выполнения программы можете просмотреть содержимое созданного файла, который будет находиться в корневом каталоге проекта (Visual Studio Code) или в подкаталоге binDebugnet5.0 (Visual Studio). Причина в том, что при вызове CreateText() вы не указали абсолютный путь, а стандартным местоположением является текущий каталог выполнения сборки.

Чтение из текстового файла

Далее вы научитесь программно читать данные из файла, используя соответствующий тип StreamReader. Вспомните, что StreamReader является производным от абстрактного класса TextReader, который предлагает функциональность, описанную в табл. 20.9.

Расширьте текущий пример приложения с целью применения класса StreamReader, чтобы в нем можно было читать текстовые данные из файла reminders.txt:

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Console.WriteLine(&quot;***** Fun with StreamWriter/StreamReader *****n&quot;);

...

<b>// Прочитать данные из файла.</b>

Console.WriteLine(&quot;Here are your thoughts:n&quot;);

using(StreamReader sr = File.OpenText(&quot;reminders.txt&quot;))

{

  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(&quot;***** Fun with StreamWriter/StreamReader *****n&quot;);

<b>// Получить объект StreamWriter и записать строковые данные.</b>

using(StreamWriter writer = new StreamWriter(&quot;reminders.txt&quot;))

{

  ...

}

<b>// Прочитать данные из файла.</b>

using(StreamReader sr = new StreamReader(&quot;reminders.txt&quot;))

{

  ...

}

Несмотря на то что существование такого количества на первый взгляд одинаковых подходов к файловому вводу-выводу может сбивать с толку, имейте в виду,что конечным результатом является высокая гибкость. Теперь, когда вам известно, как перемещать символьные данные в файл и из файла с применением классов StreamWriter и StreamReader, давайте займемся исследованием роли классов StringWriter и StringReader.

Работа с типами StringWriter и StringReader

Классы StringWriter и StringReader можно использовать для трактовки текстовой информации как потока символов в памяти. Это определенно может быть полезно, когда нужно добавить символьную информацию к лежащему в основе буферу. Для иллюстрации в следующем проекте консольного приложения (StringReaderWriterApp) блок строковых данных записывается в объект StringWriter вместо файла на локальном жестком диске (не забудьте импортировать пространства имен System.IO и System.Text):

1 ... 364 365 366 367 368 369 370 371 372 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий