Учебники

23) C # Stream

В файловых операциях C # обычно потоки используются для чтения и записи в файлы. Поток — это дополнительный слой, созданный между приложением и файлом. Поток используется для обеспечения плавных операций чтения и записи в файл.

Потоки обычно используются при чтении данных из больших файлов. Используя потоки, данные из больших файлов разбиваются на маленькие куски и отправляются в поток. Эти куски данных могут быть затем прочитаны из приложения.

Причина, по которой он разбивается на небольшие фрагменты, заключается в влиянии на производительность чтения большого файла за один раз. Если вы будете читать данные, скажем, из файла размером 100 МБ за один раз, ваше приложение может просто зависнуть и стать нестабильным. Тогда лучше всего использовать потоки, чтобы разбить файл на управляемые куски.

Поэтому, когда операция записи выполняется в файл, данные для записи сначала записываются в поток. Из потока данные затем записываются в файл. То же самое касается операции чтения. В операции чтения данные сначала передаются из файла в поток. Затем данные считываются из приложения через поток. Давайте посмотрим на пример того, как мы можем читать и писать, используя потоки.

В этом уроке вы узнаете

Stream Reader

Средство чтения потоков используется для чтения данных из файла с использованием потоков. Данные из файла сначала считываются в поток. После этого приложение считывает данные из потока.

Для нашего примера мы будем предполагать, что у нас есть диск на диске D с именем Example.txt. Файл будет простым текстовым файлом и будет иметь 2 строки, как показано ниже

  • Guru99 — .Net
  • Guru99 -C #

Для нашего примера мы создадим простое консольное приложение и будем работать с файловыми потоками.

Давайте рассмотрим пример того, как мы можем использовать потоки для чтения данных из файла. Введите приведенный ниже код в файл program.cs.

Операции с файлами C #

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Объяснение кода: —

  1. Сначала мы объявляем объект чтения потока. Объект чтения потоков используется в C # для определения потока из файла в приложение. Данные будут выталкиваться из файла в поток всякий раз, когда данные считываются из файла. File.OpenText используется для открытия файла «Example.txt» в режиме только для чтения. Обработчик файла затем отправляется объекту потокового чтения.
  2. Далее мы определяем временную переменную ‘s’, которая будет использоваться для чтения всех данных из файла.
  3. Затем мы используем метод чтения потоков ReadLine для чтения каждой строки из буфера потока. Когда мы выполним эту операцию, каждая строка будет сначала передана из файла в буфер. Затем строка строки будет перенесена из буфера в переменную ‘s’. Затем мы записываем содержимое строки ‘s’ в консоль.

Когда приведенный выше код установлен и проект запущен с использованием Visual Studio, вы получите следующий вывод.

Вывод:-

Операции с файлами C #

Из вывода видно, что Stream Reader считывает обе строки из файла. Наконец, строки строки, считанные из потока, были отправлены на консоль.

Stream Writer

Модуль записи потоков используется для записи данных в файл с использованием потоков. Данные из приложения сначала записываются в поток. После этого поток записывает данные в файл. Давайте рассмотрим пример того, как мы можем использовать потоки для записи данных из файла. Введите приведенный ниже код в файл program.cs.

Операции с файлами C #

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Объяснение кода: —

  1. Сначала мы объявляем объект записи потока. Объект записи потока используется в C # для определения потока. Затем поток используется для записи данных из приложения в файл. Данные будут передаваться из приложения в поток всякий раз, когда данные должны быть записаны. Команда File.AppendText используется для открытия файла «Example.txt» в режиме добавления. Обработчик файла затем отправляется объекту записи потока.
  2. Мы используем метод записи потока Writeline для записи строки «Guru99 — ASP.Net» в поток. Из потока строка будет записана в файл.
  3. Затем мы закрываем потоковую запись после записи в файл. Обычно рекомендуется закрывать обработчики файлов, когда файл больше не требуется для записи.
  4. Наконец, мы снова читаем содержимое файла и записываем его в журнал консоли. Это делается для проверки того, была ли строка записана в файл.

Когда приведенный выше код установлен и проект запущен с использованием Visual Studio, вы получите следующий вывод.

Вывод:-

Операции с файлами C #

Из вывода видно, что строка «Guru99 — ASP.Net» была успешно добавлена ​​в файл. Все 3 строки текста можно увидеть в консоли.

Резюме

  • Потоки используются в качестве промежуточного уровня между приложением и файлом.
  • StreamReader используется всякий раз, когда требуется прочитать данные из файла.
  • Streamwriter используется всякий раз, когда данные должны быть записаны в файл.